我正在学习openmp,使用通过quadature计算pi值的例子.在串行中,我运行以下C代码:
double serial() {
double step;
double x,pi,sum = 0.0;
step = 1.0 / (double) num_steps;
for (int i = 0; i < num_steps; i++) {
x = (i + 0.5) * step; // forward quadature
sum += 4.0 / (1.0 + x*x);
}
pi = step * sum;
return pi;
}
Run Code Online (Sandbox Code Playgroud)
我将这与使用并行减少的omp实现进行比较:
double SPMD_for_reduction() {
double step;
double pi,sum = 0.0;
step = 1.0 / (double) num_steps;
#pragma omp parallel for reduction (+:sum)
for (int i = 0; i …Run Code Online (Sandbox Code Playgroud)