我有這段並行化的代碼。減少openmp的用法是什麼?
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,因爲它在並行循環外部使用,並且不會在其外部可見。其他的減少是否也包括在內?
你不想使用最後一個私有。閱讀此鏈接以瞭解OpenMP中的減少,firstprivate,lastprivate和其他內容。 http://bisqwit.iki.fi/story/howto/openmp/#ReductionClause。查看我的答案,瞭解更多關於減少的信息。 – 2013-05-14 21:07:15