用OpenMP并行化求pi的代码,这里用的是公式法求pi。具体如下:
//公式法
#include<omp.h>
#include<stdio.h>
#include<stdlib.h>
#define n_threads 2 //这里线程数设为2
static int num_steps = 10000000; //步数
int main() {
int i;
double sum = 0.0;
double x;
double pi;
double factor;
omp_set_num_threads(n_threads); //并行化
#pragma omp parallel for reduction(+:sum) private(x, factor)
for (i = 0;i<num_steps;i++)
{
if (i % 2 == 0)
factor = 1.0;
else
factor = -1.0;
x = factor / (2 * (double)(i)+1);
sum = sum + x;
}
pi = 4 * sum;
printf("when num_steps is %d pi is: %2.8f
", num_steps, pi);
return 0;
}
得到的结果为:3.14159255