我为测试准备了一个简单的代码。这是代码中最重要的部分:
#pragma omp parallel sections
{
#pragma omp section
{
for (int j=0;j<100000;j++)
for (int i=0;i<1000;i++) a1[i]=1;
}
#pragma omp section
{
for (int j=0;j<100000;j++)
for (int i=0;i<1000;i++) a2[i]=1;
}
}
我用 MinGW 编译器编译了程序,结果和我预期的一样。因为我打算只使用一台装有 Linux 的计算机,所以我在 Linux 上编译了代码(使用同一台机器)。我使用了 gcc 4.7.2 和 intel 12.1.0 编译器。程序的效率显着下降。它比顺序程序 ( omp_set_num_threads(1)
)慢
我也尝试过在线程中使用私有数组,但效果相似。
有人可以提出任何解释吗?