MPI 非阻塞发送和接收排序
MPI non-blocking send and receive ordering
在2核系统上,对于以下代码
if(rank == 0)
{
MPI_Isend(A) // to rank 1
// Do something else.
MPI_Isend(B) // to rank 1
// Do something else.
MPI_Wait(B is sent)
MPI_Wait(A is sent)
}
else
{
MPI_Irecv(buffer1) // Listen to rank 0
// Do something else.
MPI_Irecv(buffer2) // Listen to rank 0
// Do something else.
MPI_Wait(buffer2 is finished receiving)
MPI_Wait(buffer1 is finished receiving)
}
等级 1 是否可以保证在缓冲区 1 中接收 A,在缓冲区 2 中接收 B?
谢谢!
MPI 消息是“非超车”。来自同一源的两条消息不能以不同于它们发送方式(阻塞情况)或发起方式(非阻塞情况)的不同顺序到达。当然,您也可以通过指定不同的标签来让您放心。
在2核系统上,对于以下代码
if(rank == 0)
{
MPI_Isend(A) // to rank 1
// Do something else.
MPI_Isend(B) // to rank 1
// Do something else.
MPI_Wait(B is sent)
MPI_Wait(A is sent)
}
else
{
MPI_Irecv(buffer1) // Listen to rank 0
// Do something else.
MPI_Irecv(buffer2) // Listen to rank 0
// Do something else.
MPI_Wait(buffer2 is finished receiving)
MPI_Wait(buffer1 is finished receiving)
}
等级 1 是否可以保证在缓冲区 1 中接收 A,在缓冲区 2 中接收 B?
谢谢!
MPI 消息是“非超车”。来自同一源的两条消息不能以不同于它们发送方式(阻塞情况)或发起方式(非阻塞情况)的不同顺序到达。当然,您也可以通过指定不同的标签来让您放心。