我有简单的程序:
int index;
unsigned int count = 0;
#pragma omp parallel for
for (index = 0; index < 10000; index++)
{
count++;
}
问题是我认为count应该等于10000.但是它通常在5000左右。大约10%它等于10000.
这里发生了什么?
答案 0 :(得分:5)
正如评论中所建议的那样,您需要reduction指令:
int index;
unsigned int count = 0;
#pragma omp parallel for reduction(+:count)
for (index = 0; index < 10000; index++)
{
count++;
}