我有一个简单的代码准备测试。这是代码中最重要的部分:OpenMP - 章节指令;比Windows慢的Linux
#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)
)
我也尝试过使用私有数组在线程中,但效果是类似的。
有人可以提出任何解释吗?
奇怪的代码,它应该用于评估,就是这样吗? – alexbuisson
什么是你的windows和Linux硬件配置?你确定在gcc命令行上有-fopenmp吗? – alexbuisson
谢谢你的回复。我用命令编译代码:g ++ -fopenmp name.cpp。我将检查硬件配置。 – user2572031