MPI_Probe() 用于确定消息大小

MPI_Probe() for determining message size

MPI_Probe 的一个常见用法是确定传入消息的大小,以便为接收缓冲区分配足够的内存。但这也可以通过一对单独的 MPI_Send-MPI_Recv 调用来完成,即发送方进程在不同的消息中将消息大小发送给接收方。可以假设 MPI_Probe 通常是更快的选择吗?为什么?我们可以执行一些测试并比较挂钟时间,但结果可能取决于实现。

  1. 对于短消息,延迟比消息的大小更重要,因此探测小消息可能更快。
  2. 探测使得处理 MPI_ANY_SOURCE 作为发件人变得更容易:否则您必须首先确定大小消息的来源,然后从该来源进行特定的接收。

人们通常使用 MPI_Iprobe 而不是 MPI_Probe,它会告诉您是否有消息。是的,您可以使用多个 Irecv 来模拟它,但为什么要让您的代码如此复杂?