MPI_Dims_create()的返回值

时间:2018-06-29 23:31:41

标签: parallel-processing mpi distributed-computing

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

1 个答案:

答案 0 :(得分:3)

MPI_Dims_create是专门作为便捷函数创建的,用于创建平衡拓扑。

平衡拓扑,即理想情况下立方体具有一定的最佳属性。考虑您正在使用流程在160x160x160网格上进行仿真。

  • 有了4x4x4,每个处理器都将得到40x40x40的支持,如果进行简单的边界交换,则必须向6个邻居中的每个邻居发送40x40({{1} })

  • 每个处理器得到96008x4x2的边界为20x40x80

  • 每个处理器得到2x20x40 + 2x20x80 + 2x40x80 = 1120016x2x2的边界为10x80x80

如您所见,需要交换的边框大小对于多维数据集来说是最小的。通常,平衡拓扑是一个很好的默认设置。

您还可以使用4x10x80 + 2x80x80 = 16000设置约束,或使用MPI_Dims_create创建灵活的笛卡尔拓扑。