gpt4 book ai didi

send - MPI 中发送和接收的最佳数据大小

转载 作者:行者123 更新时间:2023-12-04 14:42:40 25 4
gpt4 key购买 nike

我正在使用 MPI 编写一个并行应用程序,其中主进程的数据大小大约与缓存一样大(在我正在使用的平台上为 4MB)以发送给每个进程。由于 master 一次发送 4MB 可能太大,因此有必要将整个数据分成适合发送和接收的特定大小的较小块。

我的问题是,对于给定整个数据的大小,对于发送和接收每个较小块的最佳大小应该有什么建议?

谢谢。

最佳答案

4MB 对任何 MPI 实现来说都不是问题;不过,我不确定您所说的“太大”是什么意思。

一个经验法则是,如果您可以轻松地在一条消息中发送所有数据,那通常会更快——原因是发送和接收任何一条消息所需的时间有限(< em>latency) 来自函数调用、传输层调用等。最重要的是,发送任何额外的数据字节通常需要一些接近固定的时间(超过带宽。)这只是对处理器之间发送消息(尤其是大消息)的实际复杂性的一个非常粗略的近似,但它是一个非常有用的近似。在该模型中,您发送的消息越少越好,因为您招致延迟开销的次数更少。

如果您正在考虑发送许多 小消息,上述情况几乎总是正确的;但是,如果您谈论的是发送(比方说)4 条 1MB 消息与 1 条 4MB 消息,即使在该模型下,差异也可能很小,并且可能会被特定于您的传输的其他影响所淹没。如果您想更准确地评估您的平台需要多长时间,那么对实际 需要多长时间的经验测量确实是无可替代的。最好的方法就是在您的代码中尝试几种方法,看看什么是最好的。这真的是唯一确定的答案。第二种方法是查看 MPI“微基准”:

以上两者都包括发送和接收各种大小的消息所需时间的基准;你用你的 MPI 编译上面的内容,你可以简单地读出发送/接收(比如)4MB 消息与 4x 1MB 消息需要多长时间,这可能会给你一些关于如何继续的线索。

关于send - MPI 中发送和接收的最佳数据大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5245512/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com