1

次の MPI コードを想定します。

MPI_Comm_Rank(MPI_COMM_WORLD, &rank);

if (rank == 0){
   MPI_Send(a, count, MPI_CHAR, 1, 0, MPI_COMM_WORLD);
   MPI_Send(b, count, MPI_CHAR, 1, 0, MPI_COMM_WORLD);
}
else if (rank == 1){
   MPI_IRecv(a, 1, MPI_CHAR, 0, 0, MPI_COMM_WORLD, &req);
   MPI_Recv(b, count, MPI_CHAR, 0, 0, MPI_COMM_WORLD);
   MPI_Wait(&req, &status);
}

マッチングがバッファから1つの要素しか読み取っMPI_Send(a, count, ...)ていないにもかかわらず、最初のものはブロックされないと言うのは正しいですか?MPI_IRecv(a, 1, ...)

また、 buffer に対して読み取り/書き込みが行われないため、プロセス 1 が直後に呼び出されなくaてもブロックされないのは正しいですか?MPI_WaitMPI_IRecv

ありがとう。

4

1 に答える 1