【发布时间】:2012-06-04 00:47:21
【问题描述】:
我在尝试使用 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 正在并行化第一个 for 循环,他使用 results[] 的位置两次或更多,因为 results[n++] 会产生未定义的行为(因为不能保证 n 正确递增),我正确吗?
如何正确索引和存储我的结果?
【问题讨论】: