我注意到並不是所有的MPI_Isend/MPI_IRecv都正在執行。我認爲這可能或者是我發送和接收的順序,或者是代碼不等待所有命令執行的事實。我已經複製下面代碼的摘錄。你能否建議我可能做錯了什麼?MPI和MPI等待問題中的非阻塞通信。並非所有信息都正確傳遞
謝謝!這段代碼執行後
MPI_Status status[8];
MPI_Request request[8];
....
....
if ((my_rank) == 0)
{
MPI_Isend(eastedge0, Rows, MPI_DOUBLE, my_rank+1, 0, MPI_COMM_WORLD, &request[0]);
MPI_Irecv(westofwestedge0, Rows, MPI_DOUBLE, my_rank+1, MPI_ANY_TAG, MPI_COMM_WORLD, &request[6]);
MPI_Wait(&request[6], &status[6]);
}
if ((my_rank) == 1)
{
MPI_Irecv(eastofeastedge1, Rows, MPI_DOUBLE, my_rank-1, MPI_ANY_TAG, MPI_COMM_WORLD, &request[0]);
MPI_Wait(&request[0], &status[0]);
MPI_Isend(westedge1, Rows, MPI_DOUBLE, my_rank-1, 0, MPI_COMM_WORLD, &request[6]);
}