我一共8個消息的使用MPI 4個節點被傳遞。我注意到有兩個消息的數組沒有提供有意義的結果。我已經複製了以下代碼的摘錄?這些是我根據以下代碼/結果得到的一些相關問題:MPI_Isend/Recv-是否存在死鎖?
- MPI_Isend是否也需要等待?我不確定是否存在僵局。我也試過把這兩個變量從一個節點傳遞給另一個節點,並且數組值仍然是NULL。
- 威爾MPI_SendRecv提高代碼的效率,這裏Non Blocking communication in MPI and MPI Wait Issue. Not all information is passed correctly建議?如果是這樣,那麼/爲什麼?也將欣賞一些關於設置的指針。
謝謝!
Source Code:
if ((my_rank) == 0)
{
MPI_Irecv(A, 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_Isend(AA, Rows, MPI_DOUBLE, my_rank-1, 0, MPI_COMM_WORLD, &request[6]);
}
if ((my_rank) == 2)
{
MPI_Isend(B, Rows, MPI_DOUBLE, my_rank+1, 0, MPI_COMM_WORLD, &request[7]);
}
if ((my_rank) == 3)
{
MPI_Irecv(BB, Rows, MPI_DOUBLE, my_rank-1, MPI_ANY_TAG, MPI_COMM_WORLD, &request[7]);
MPI_Wait(&request[7], &status[7]);
}
有遠遠不夠的情況下在這裏要弄清楚到底是怎麼回事。什麼是B,BB,A,AA,行?哪些變量在這裏沒有明智的價值?你是什麼意思數組值是NULL?顯示問題的完整代碼段是最好的。至於你的其他問題,是的,這兩個Isend和Irecv的應匹配等待或相似,並且沒有,在這個特殊的情況下,SENDRECV不匹配給定的模式(在上述情況下,沒有一個任務是發送和接收)。 – 2011-05-20 03:50:53
謝謝喬納森。我能夠修復這個錯誤。它與Send/recv的打印方式有關。命令。謝謝你的幫助。 – Ashmohan 2011-05-24 23:01:50