Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 非阻塞点到点通信中发送模式对MPI开销的影响_C_Mpi - Fatal编程技术网

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

C 非阻塞点到点通信中发送模式对MPI开销的影响,c,mpi,C,Mpi,我想确定MPI中非阻塞点对点通信的开销。有一些基准测试可用(如或),但出于某种原因,它们不区分MPI提供的发送模式(标准、就绪、缓冲、同步)和仅使用标准模式。MPI报告指出: 在此模式下,由MPI决定是否缓冲传出消息。MPI可以缓冲传出消息。在这种情况下,发送调用可能在调用匹配的接收之前完成。另一方面,出于性能原因,缓冲区空间可能不可用,或者MPI可能选择不缓冲传出消息。在这种情况下,发送呼叫将不会完成,直到发布了匹配的接收,并且数据已移动到 接受者 我假设将消息写入缓冲区的性能可能与将消息直接

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

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


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

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

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