异步例程何时更改为同步例程?

When does an asynchronous routine change to a synchronous one?

据我所知,当缓冲区已满时,异步发送 (MPI_Isend) 会更改为同步发送 (MPI_Send),因此它必须等到适当的 space available ,所以我想知道当缓冲区为空时异步接收(MPI_Irecv)是否更改为同步接收(MPI_recv)?

据我所知,MPI_Isend 不会因为缓冲区已满而变成阻塞例程。原因是Isend使用了用户的发送缓冲区,所以内部缓冲没有问题。

也许您应该澄清“缓冲区”的含义。用户发送缓冲区,还是内部的东西?用户缓冲区永远不会“满”或“空”:您唯一可以说的是,在 MPI_Wait 之前不应重用缓冲区,在等待之后可以安全使用。