我在 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%,实际上我失去了并行性!我能做些什么?