我在尝试使用 OpenMP 并行化嵌套循环时遇到问题 - 它只是用于玩耍和习惯的演示代码。
int* myresults = new int[1000]
#pragma omp parallel
{
#pragma omp for
for(int z=0; z<=mainCount;z++)
{
results[n++] = myfunc(z,0); //compute something
for(int i=0;i<=secondCount;i+=5)
{
results[n++]=myfunc(z,i);
}
}
}
我的问题是我的结果数组的索引。我假设由于 OpenMP 正在并行化他使用results[]
两次或更多位置的第一个 for 循环,因为results[n++]
会产生未定义的行为(因为不能保证 n 正确递增),我正确吗?
如何正确索引和存储我的结果?