用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\n", num_steps, pi);
return 0;
}
得到的結果爲:3.14159255