为什么要使用 sendrecv?

dan*_*007 2 python mpi

我正在尝试使用 mpi4py 自学 MPI 消息传递接口。我注意到 MPI 有一个名为“sendrecv”的函数。但是,它没有在 mpi4py 文档中列出: http://documen.tician.de/boostmpi/reference.html

我可以简单地模拟 sendrecv 函数吗

  communicator.send(0xdeadbeef, dest=1, tag=0)
  data = communicator.recv(source=1, tag=0)
Run Code Online (Sandbox Code Playgroud)

除了模拟接收后发送之外,“sendrecv”还能做什么?在哪里可以找到有关它的 mpi4py 文档?

sus*_*att 7

MPI_Sendrecv是一个便利函数。它发送一条消息并接收一条消息,并保证不会因为每个进程等待另一条消息发送而导致死锁。

  • 当然,保证是一个很重的词;当然可以使用 sendrecv() 编写看起来合理的通信模式来解决死锁。sendrecv 的优点是它是阻塞式(send + recv),而不是先阻塞式发送再阻塞式接收;它允许您编写一些无法通过 send 和 receive 安全完成的通信模式,而不必一直使用 isend + irecv + waitall。 (4认同)