mpirun -np 5 mpiSort
を使用して5つのコアで実行し、末尾にMPI_gather
を追加できます。ソートコードは実際にMPIを使用していますか(つまり、最初にMPI_init
を呼び出していますか?)。あなたがいると仮定すると、あなたはtime
は、各プロセスが時間をソートしている削減、
# include <mpi.h>
#include <iostream>
using namespace std;
int main (int argc, char *argv[])
{
int ierr, rank, nprocs, root=0;
double time, buf;
ierr = MPI_Init (&argc, &argv);
ierr = MPI_Comm_rank (MPI_COMM_WORLD, &rank);
ierr = MPI_Comm_size (MPI_COMM_WORLD, &nprocs);
time = 0.5;
ierr = MPI_Reduce (&time, &buf, 1, MPI_DOUBLE_PRECISION,
MPI_SUM, root, MPI_COMM_WORLD);
if (rank == root){
buf = buf/nprocs;
cout << buf << "\n";
}
MPI_Finalize ();
}
で終わりに5つのコアと単純に平均的に実行することができます。
はい、MPI_initが最初です。私はあなたのコードが別のシングルコアで5回、または5つのコアで一度にソートすると思いますか?しかし、私はソート時間を2回のコアで5回行いたいと思っています。 – lucahuy
申し訳ありませんが、わかりませんが、これを明確にするために最小限のコードを投稿できますか?彼らは並行して並べ替えるのですか? MPIを使用すると、各コアはMPIコマンドを使用して通信可能になり、同時に別のインスタンスとして実行されます。上記のコードは5つの別々のインスタンスのソートをモデル化しています(時間= 0.5を関数に置き換えます)。これは5つのコアで同時に実行され、その後5つすべての平均を得るために通信されます。 –
'mpirun -np 2 mpiSort'を5回実行して、実行可能ファイルの平均時間を取るのはなぜですか? MPI実行可能ファイル全体が、 'mpirun -np'で指定したコア数で同時に実行されることに注意してください。 –