假设我有64
个进程,并且想在3-D
中创建MPI笛卡尔拓扑,则MPI_Dims_create()
返回的默认拓扑为4x4x4
。为什么选择4x4x4
,为什么不选择8x4x2
或4x8x2
或16x2x2
或其他可能的组合?
答案 0 :(得分:3)
MPI_Dims_create
是专门作为便捷函数创建的,用于创建平衡拓扑。
平衡拓扑,即理想情况下立方体具有一定的最佳属性。考虑您正在使用流程在160x160x160
网格上进行仿真。
有了4x4x4
,每个处理器都将得到40x40x40
的支持,如果进行简单的边界交换,则必须向6个邻居中的每个邻居发送40x40
({{1} })
每个处理器得到9600
,8x4x2
的边界为20x40x80
每个处理器得到2x20x40 + 2x20x80 + 2x40x80 = 11200
,16x2x2
的边界为10x80x80
如您所见,需要交换的边框大小对于多维数据集来说是最小的。通常,平衡拓扑是一个很好的默认设置。
您还可以使用4x10x80 + 2x80x80 = 16000
设置约束,或使用MPI_Dims_create
创建灵活的笛卡尔拓扑。