0
我對MPI點對點阻塞模式有點困惑。
現在我有以下代碼。
MPI:點對點阻塞(MPI_Send&MPI_Recv)
y = id;
j = id - 1;
if(j<0) j = p -1;
k = id + 1;
if(k>p-1) k = 0;
MPI_Recv(&x, 1, MPI_INT, k, 0, MPI_COMM_WORLD, &status);
MPI_Send(&y, 1, MPI_INT, j, 0, MPI_COMM_WORLD);
z = x + y;
這將被封鎖作爲MPI_RECV是一個阻塞函數,但是當我更改順序調用MPI_SEND第一一切正常的話,我不知道原因。
提前致謝,並對我的英語感到抱歉。
現在好了,爲什麼會在程序運行正常,未當我更改訂單時被阻止,並且MPI_Send可以立即返回 – AHM200
,如果您先MPI_Recv(),您的程序將永久掛起。如果你首先使用MPI_Send(),並且消息足夠短,那麼它被髮送,並且匹配的MPI_Recv()將完成。 有意義嗎? –
是的,謝謝。 – AHM200