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

Posted

技术标签:

【中文标题】非阻塞点对点通信中发送模式对 MPI 开销的影响【英文标题】:Influence of send modes to MPI overhead in non-blocking point-to-point communication 【发布时间】:2017-10-21 06:25:00 【问题描述】:

我想确定 MPI 中非阻塞点对点通信的开销。有一些可用的基准测试(如Sandia MPI Micro-Benchmark Suite 或OSU micro-benchmarks),但由于某种原因,它们不区分 MPI 提供的发送模式(标准、就绪、缓冲、同步)并且仅使用标准模式。 MPI 报告指出

在这种模式下,由 MPI 决定是否缓冲传出消息。 MPI 可以缓冲传出消息。在这种情况下,发送调用可能会在调用匹配接收之前完成。另一方面,缓冲区空间可能不可用,或者 MPI 出于性能原因可能选择不缓冲传出消息。在这种情况下,发送调用将不会完成,直到匹配的接收已发布,并且数据已被移动到 接收器。

我假设将消息写入缓冲区可能与将消息直接发送到接收器(可能物理上很远,通过低带宽连接等连接)具有不同的性能。所以我的问题是,我的假设是否错误,缓冲发送和准备发送之间从来没有任何显着的性能差异(如果是,为什么) - 或者这些基准是否忽略了这些可能的差异(如果是,为什么) .

【问题讨论】:

【参考方案1】:

您的理解是正确的,缓冲和非缓冲发送的性能可能不同。如果调用MPI_Send,MPI 实现可以根据消息大小、系统架构、网络速度和许多其他变量来选择使用哪种机制。一般来说,缓冲发送用于小消息,同步发送用于大消息。

MPI 应用程序开发人员坚持使用MPI_Send 并依靠 MPI 实现来提供最佳性能的是 recommended。因此,大多数 MPI 基准测试还报告了MPI_Send 的性能,而不是其他不常用的模式。

【讨论】:

以上是关于非阻塞点对点通信中发送模式对 MPI 开销的影响的主要内容,如果未能解决你的问题,请参考以下文章

mpi4py 点到点通信总结

ActiveMQ简单简绍(“点对点通讯”和 “发布订阅模式”)

各位,请问有没有支持CC2530的点对点通信的zigbee例程呢? 谢谢

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

非阻塞 UDP 写入返回的字节数是不是少于请求的字节数?

本篇文章主要是讲SpringBoot集成activeMQ实现Queue模式点对点通信