我正在尝试并行化以下代码段以计算素数的数量<比n。
static int primes_count(int n)
{
int p = 0;
int i;
#pragma omp parallel for private(i) shared(n, p) default(none)
for (i = 2; i < n; i++) {
if (is_prime(i)) p++;
}
return p;
}
问题是我每次都会得到不同的价值观。但是,如果我删除了编译指示行,则顺序方法会始终产生确定性值。
我做错了什么?