首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >进程间平衡一组不同大小的矩阵块的算法

进程间平衡一组不同大小的矩阵块的算法
EN

Stack Overflow用户
提问于 2020-12-02 14:35:26
回答 1查看 47关注 0票数 0

我想在进程之间平衡一组矩阵块。矩阵块有不同的大小,尽管通常一个块占主导地位,大小相似,甚至比所有其他块加起来还要大。进程的数量可能比块的数量大得多,也可能小得多。每个块可以存储在单个进程上,也可以作为ScaLAPACK数组分发。平衡应在质量上满足以下条件:

  • 任何进程都不应该比target_load =sum(size(块))/ n_procs接收更多的矩阵元素。
  • 任何块都不应该分布在比size(块)/ target_load更多的进程上。MPI通信器可以从mpi_comm_world中分离出来
  • MPI通信器不能重叠(块1和块2都分布在进程0:4上很好,但块1分布在进程0:3上,块2分布在进程2:5上是不行的;未分布的块可以任意堆叠在分布式块的顶部)。

我知道,这种分配将取决于适用前两个条件的优先权有多大和有多大(第三个条件应严格适用)。然而,是否有任何算法可以方便地解释这些条件?

EN

回答 1

Stack Overflow用户

发布于 2020-12-03 15:27:46

这是计算机科学中一个很常见的问题,所以现成的图书馆应该能够帮助你。您应该查看梅蒂斯和/或苏格兰威士忌,看看这两种方法是否适合您的需要。

您的第一个条件是‘负载平衡’,第二个条件是类似于‘通信成本’(即MPI通信在分割块中的成本)。

这两个条件之间的适当平衡将完全取决于问题的性质,但使用苏格兰威士忌或梅蒂斯,你应该能够调整这些参数,直到你找到最佳的组合。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65110186

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档