その意味?
つまり、おそらくソース コードを見て、それがどのように機能するかを理解しようとする必要があるということです。High Performance Mark は既に適切な MPI 呼び出しを指しています。main
関数の先頭を見ると、次の行が表示されます。
MPI_Comm_size(MPI_COMM_WORLD,&ntasks);
if (((ntasks%2) !=0) || ((LIMIT%ntasks) !=0)) {
printf("Sorry - this exercise requires an even number of tasks.\n");
printf("evenly divisible into %d. Try 4 or 8.\n",LIMIT);
MPI_Finalize();
exit(0);
}
明らかに、偶数の MPI プロセスが必要であり (それ以外の場合はntasks%2 != 0
)、この数も除算する必要がありますLIMIT
(この場合は に等しくなり2500000
ます)。mpiexec
MPI プログラムは、ほとんどの場合、またはと呼ばれる MPI ランチャーを介して実行する必要がありますmpirun
。プロセス数をパラメーターとして取ります。を介してコードを実行しない場合mpiexec
、ほとんどの MPI 実装は、プログラムが を使用して開始されたかのように動作します。
mpiexec -np 1 ./program
1
は偶数ではないため、条件の最初の部分がif
true と評価され、中止コードが実行されます。
を使用して端末でプログラムを実行する必要がありますmpiexec -np <# of procs> executable
。ここ<# of procs>
で、 は目的の MPI プロセス数、executable
は実行可能ファイルの名前です。<# of procs>
は偶数で、割る必要があります2500000
。2
、4
またはを使用することをお勧めし8
ます。10
もするでしょう。開発システムにマルチコア CPU または複数の CPU が搭載されていない限り、速度の向上は見られません。
あなたは Code::Blocks について言及しています。を介して MPI プログラムを実行する方法については、こちらを参照してくださいmpiexec
。