OpenMP并行不能按预期工作

时间:2016-09-04 12:56:00

标签: for-loop parallel-processing openmp

我有简单的程序:

int index;
unsigned int count = 0;

#pragma omp parallel for
for (index = 0; index < 10000; index++)
{
    count++;
}

问题是我认为count应该等于10000.但是它通常在5000左右。大约10%它等于10000.

这里发生了什么?

1 个答案:

答案 0 :(得分:5)

正如评论中所建议的那样,您需要reduction指令:

int index;
unsigned int count = 0;

#pragma omp parallel for reduction(+:count)
for (index = 0; index < 10000; index++)
{
    count++;
}