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

时间:2017-05-21 15:26:44

标签: c mpi

我想确定MPI中非阻塞点对点通信的开销。有一些基准可用(如Sandia MPI Micro-Benchmark SuiteOSU micro-benchmarks),但由于某些原因,他们不区分MPI提供的发送模式(标准,准备,缓冲,同步)和仅使用标准模式。 MPI报告指出

  

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

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

1 个答案:

答案 0 :(得分:0)

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

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