Open MP APIをテストするために、少しサンプルコードを作成したいと思います。これで計算を使って3レベルの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
これは同期の問題だと思いますが、これを解決するにはどうすればよいですか?私はOpenMPについてたくさん読んだことがありますが、それを解決する方法がわかりません。
どうもありがとう、
よろしくお願いします、