0

これはOpenMPでの私の最初の試みですが、スピードアップすることはできません。マシンはLinuxamd_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

何か案は?

4

1 に答える 1

4

-fopenmpコンパイラにフラグを追加する必要があると思います。

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

を使用する-fopenmpと、コンパイラは、検出されたOpenMPディレクティブに基づいて並列コードを生成します。 -lgompGnuOpenMPプロジェクトのライブラリをロードします。

マシンにはコアがいくつありますか?

于 2011-11-01T00:17:29.363 に答える