我有这段并行化的代码。
int i,n; double area,pi,x;
area=0.0;
#pragma omp parallel for private(x) reduction (+:area)
for(i=0; i<n; i++){
x= (i+0.5)/n;
area+= 4.0/(1.0+x*x);
}
pi = area/n;
据说减少会消除如果我们不使用减少可能发生的竞争条件。我仍然想知道我们是否需要为区域添加 lastprivate,因为它在并行循环之外使用并且在它之外不可见。否则减少是否也涵盖了这一点?