首页 > 解决方案 > MPI_Dims_create() 的返回值

问题描述

假设我有64进程并且我想在 中创建 MPI 笛卡尔拓扑3-D,则返回的默认拓扑MPI_Dims_create()4x4x4。为什么是它4x4x4,为什么不是8x4x24x8x216x2x2或任何其他可能的组合?

标签: parallel-processingmpidistributed-computing

解决方案


MPI_Dims_create专门作为便利功能来创建平衡拓扑。

平衡拓扑,即理想的立方体具有一定的最优特性。考虑您正在160x160x160使用您的流程在网格上进行模拟。

  • 随着4x4x4每个处理器40x40x40开始工作,并且在简单的边界交换的情况下必须发送40x40给 6 个邻居9600中的每一个(总共)

  • 随着8x4x2每个处理器获得20x40x80,边界是2x20x40 + 2x20x80 + 2x40x80 = 11200

  • 随着16x2x2每个处理器获得10x80x80,边界是4x10x80 + 2x80x80 = 16000

如您所见,需要交换的边框尺寸对于立方体来说是最小的。通常,平衡拓扑是一个很好的默认设置。

您还可以设置约束MPI_Dims_create或用于MPI_Cart_create创建灵活的笛卡尔拓扑。


推荐阅读