无法获得简单的OpenMP并行for循环的速度

时间:2011-10-31 23:51:06

标签: openmp parallel-for

这是我对OpenMP的第一次尝试,但无法加速。这台机器是Linux amd_64。 我编写了以下代码:

printf ("nt = %d\n", nt);
omp_set_num_threads(nt);

int i, j, s;
#pragma omp parallel for private(j,s)
for (i=0; i<10000; i++)
{
   for (j=0; j<100000; j++)
   {
      s++;
   }
}


And the compile with
g++ tempomp.cpp -o tomp -lgomp

And run it with different nthreads, no speedup:

nt = 1
elapsed time =2.670000

nt = 2
elapsed time =2.670000

nt = 12
elapsed time =2.670000

有什么想法吗?

1 个答案:

答案 0 :(得分:4)

我认为您需要将标志-fopenmp添加到编译器中:

 g++ tempomp.cpp -o tomp -lgomp -fopenmp

使用-fopenmp时,编译器将生成并行代码 基于遇到的OpenMP指令。 -lgomp加载Gnu OpenMP项目的库。

您的机器有多少个核心?