MPI_探头是否尽快返回?

MPI_探头是否尽快返回?,mpi,Mpi,假设我的MPI进程正在等待一条非常大的消息,我正在使用MPI\u Probe等待它。假设进程从网络接收到消息的第一个通知(如大小为的标头或类似的消息)时,MPI\u Probe调用将返回,是否正确 也就是说,它的返回速度是否会比我使用MPI_Recv等待消息时快得多,因为它不需要接收完整消息?标准对此问题相当沉默(MPI-3.0,第3.8.1节),但确实提供了以下内容: MPI_PROBE和MPI_IPROBE的MPI实施需要保证进度: 如果进程发出了对MPI_探测的调用,并且发送了与探测匹配的

假设我的MPI进程正在等待一条非常大的消息,我正在使用
MPI\u Probe
等待它。假设进程从网络接收到消息的第一个通知(如大小为的标头或类似的消息)时,
MPI\u Probe
调用将返回,是否正确


也就是说,它的返回速度是否会比我使用
MPI_Recv
等待消息时快得多,因为它不需要接收完整消息?

标准对此问题相当沉默(MPI-3.0,第3.8.1节),但确实提供了以下内容:

MPI_PROBE和MPI_IPROBE的MPI实施需要保证进度: 如果进程发出了对MPI_探测的调用,并且发送了与探测匹配的消息 已由某个进程启动,则将返回对MPI_PROBE的调用,除非 消息由另一个并发接收操作(由另一个执行)接收 探测过程中的线程)

由于MPI_PROBE和MPI_RECV都将启用进度引擎,因此我怀疑这两个函数之间除了内存拷贝之外还有什么区别。通过启动进度引擎,MPI实现可能会(在内部)接收到消息。在MPI_PROBE中,可以避免将其复制到用户缓冲区的最后一步


如果您担心性能,那么尽可能避免使用MPI_ANY_源和MPI_ANY_标记将有助于大多数实现(当然是MPICH)走上更快的道路。

您是否可以发布代码以提供有关预期用途的更多详细信息?