Visual Studio 2012でopen-mpを使用してプログラムを作成しましたが、いくつか問題があります.これは私のコードです:
#pragma omp parallel num_threads(4) private(k)
{
#pragma omp for
for(k=0x20AC6E12AF3E4DB0;k<=MAXINT64;k++)
{
U.k=k;
init();
Decrypt(s1);
Decrypt(s2);
}
}
上記のコードがコンパイルされ、CPU 使用率は 100% でしたが、出力が間違っていました。コードを次のように変更すると:
#pragma omp parallel num_threads(4) private(k)
{
#pragma omp for
for(k=0x20AC6E12AF3E4DB0;k<=MAXINT64;k++)
{
U.k=k;
init();
#pragma omp critical
{
Decrypt(s1);
Decrypt(s2);
}
}
}
出力は正しくなりますが、この場合、私の CPU 使用率は 100% ではなく、実際には並列処理が失われました! 私に何ができる?