我想编写一些示例代码来测试 Open MP API。我已经做了一个三级 For 循环,并在其中进行了计算。
问题是我的结果是错误的。
这是我的代码:
long value = 0;
#pragma omp parallel
{
#pragma omp for
for (int i=0;i<=9999;i++)
{
value += (M_PI * i * i -12,33 * M_PI)- M_PI;
for (int j=0;j<=888;j++)
{
value += (M_PI * j * i -12,33 * M_PI)- M_PI;
for (int k=0;k<=777;k++)
{
value += (M_PI * k * j -12,33 * M_PI)- M_PI;
}
}
}
}
我的问题 :
没有 Open MP,value
变量的值为:191773766
Whit Open MP,value
变量的值为: 1092397966
我认为这是一个同步问题,但如何解决呢?我已经阅读了很多关于 Open MP 的内容,但我不知道如何解决它。
非常感谢,
此致,