MPI 非阻塞发送/接收

Posted

技术标签:

【中文标题】MPI 非阻塞发送/接收【英文标题】:MPI non blocking send/recv 【发布时间】:2012-08-24 22:24:26 【问题描述】:

我很好奇 MPI 中缺少这个功能:

MPI_Isendrecv( ... );

即非阻塞发送和接收,谁能告诉我省略的原因?

【问题讨论】:

在 netlib.org 上查看原始 MPI 规范的草案,似乎该功能曾经被包含,但后来在最终的 MPI 1.0 规范中被删除。现在我也很好奇是什么原因。 【参考方案1】:

我认为MPI_SENDRECV 的存在是为了方便想要使用阻塞语义但需要实现移位操作的程序员。如果您对非阻塞语义感到满意,您应该简单地使用现有的MPI_ISENDMPI_IRECV

有趣的是,MPI-3 将添加非阻塞集合(例如MPI_IBARRIER),但仍然没有MPI_ISENDRECV(参见http://meetings.mpi-forum.org/draft_standard/mpi3.0_draft_2.pdf)。

【讨论】:

以上是关于MPI 非阻塞发送/接收的主要内容,如果未能解决你的问题,请参考以下文章

MPI 非阻塞发送/接收中的请求数组

用于未知消息大小的 MPI 非阻塞发送和接收以及 mpi_iprobe()

发送多个 mpi 非阻塞发送 - 它会保留发送的顺序吗

一个不安全的 MPI 非阻塞通信示例?

非阻塞点对点通信中发送模式对 MPI 开销的影响

结构填充和非阻塞通信缓冲区问题导致的 MPI 派生数据类型问题