gpt4 book ai didi

parallel-processing - 在进程之间平均重新分配数据的函数/算法

转载 作者:行者123 更新时间:2023-12-02 04:36:23 26 4
gpt4 key购买 nike

我有一个全局数组 A,其元素最初不均匀地分布在 MPI 程序的多个进程中。为了负载平衡,我想重新分配 A 的元素,以便每个进程拥有大致相同数量的元素。重新排列有很大的自由度,因为 A 的元素顺序并不重要——我不关心 A 的哪些元素最终出现在哪个进程上。当然,我希望尽快完成转移。

是否有这个问题的规范名称、标准解决方案或可以为我解决的 MPI 函数?

最佳答案

正如您已经说过的,通常这称为“负载平衡”。

没有直接的MPI函数,需要自己做一些算术运算和发送/接收。然而,那里有相当多的库,它们提供了很好的分区域等。 Metis对于网格或基于图形的分区非常流行。

在您的情况下,困难来自于这样一个事实,即所有等级可能只需要将其部分数据发送(和接收)到(从)不同数量的等级。如果您有可能在一个排名中获得完整的全局 A,您可以使用 MPI_Scatter 分散它。否则你需要做一些计算:

  • 首先发送(MPI_Allgather)所有rank的元素个数给每个rank
  • 计算每个等级应该发送(接收)多少元素以及发送给(来自)谁。
  • 进行发送/接收或使用单向通信。

关于parallel-processing - 在进程之间平均重新分配数据的函数/算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42286354/

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