OpenMP并行不能按预期工作

Mat*_*Mav 0 parallel-processing for-loop openmp

我有简单的程序:

int index;
unsigned int count = 0;

#pragma omp parallel for
for (index = 0; index < 10000; index++)
{
    count++;
}
Run Code Online (Sandbox Code Playgroud)

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

这里发生了什么?

小智 5

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

int index;
unsigned int count = 0;

#pragma omp parallel for reduction(+:count)
for (index = 0; index < 10000; index++)
{
    count++;
}
Run Code Online (Sandbox Code Playgroud)