标签: c openmp race-condition
我已经读过默认情况下共享OpenMP中的变量。这是否意味着在下面的代码中,应该将从0到N-1的所有数字相加,是否存在竞争条件?
int sum = 0,i; #pragma omp parallel for for (i = 0; i < N; i++) sum+=i;
答案 0 :(得分:2)
是的,有竞争条件。您应该将reduction(+:sum)添加到该pragma中。这将有效地在每个线程中创建不可见的私有副本,然后在循环之后对它们求和。
reduction(+:sum)