0

我读过 OpenMP 中的变量默认是共享的。这是否意味着在下面的代码中,应该对从 0 到 N-1 的所有数字求和,存在竞争条件?

int sum = 0,i;
#pragma omp parallel for
for (i = 0; i < N; i++)
    sum+=i;
4

1 回答 1

3

是的,有一个竞争条件。您应该添加reduction(+:sum)到编译指示。这将有效地在每个线程中创建不可见的私有副本,然后在循环后对它们进行求和。

于 2013-04-08T10:43:22.080 回答