gpt4 book ai didi

mpi - MPI_Comm_split 有多贵?

转载 作者:行者123 更新时间:2023-12-04 01:55:51 26 4
gpt4 key购买 nike

调用 MPI_Comm_split 的成本是多少?它是否以 O(n)、O(log(n)) 或其他方式运行(n 是要拆分的 comm 中的等级数)?

我正在编写针对基于 infiniband 的 super 计算系统的代码。

最佳答案

如果您使用 Open MPI,MPI_Comm_split()(一般来说,创建通信器)可能并不便宜。

设计选择是从通信器 ID(例如 CID,这是一个数字)到通信器的超快速转换。这就像访问数组一样快速和简单。

为了尽可能降低内存占用,新创建的通信器始终分配有最低的可用 CID。

CID 分配是通过迭代算法实现的,每次迭代使用两个 MPI_Iallreduce(),迭代次数取决于 CID 空间在所有任务上的碎片化程度。根据您使用的 MPI 任务数量以及 CID 空间的碎片化程度,这可能需要相当长的时间。

您可以将 MPI_Comm_split() 视为两步探戈 - 创建新的通信者组 - 为新的通信器分配一个 CID

第二步是最昂贵的,它不仅取决于初始通信器中的等级数。

如果我没理解错的话,MPICH 做出了另一种设计选择。将通信器 ID 转换为通信器的成本稍高(但实际上每次调用 MPI 子例程时都会发生这种情况),但不需要始终使用最低的可用 CID,因此第二步要便宜得多(并且仅当已创建新的通信器)。

因此,即使 Open MPI 和 MPICH 在点对点、集体和单方通信方面具有可比的性能,但如果您创建大量通信器(或者如果您使用第三方在后台执行此操作的库)。

关于mpi - MPI_Comm_split 有多贵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50726071/

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