У меня есть этот кусок кода, который распараллелен.
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 для области, поскольку она используется вне параллельного цикла и не будет видна за его пределами. В противном случае скидка распространяется и на это?