两级直接网络上的集体通信算法研究
1. 通信时间与链路利用率计算
在处理大消息时,某些因素会被忽略,因为带宽项起主导作用。假设仅使用 1 条链路传输 n 字节数据时,任意两个节点之间发送消息的时间为 nβ,其中 β 是每字节的传输时间。在进行计算操作时,每字节会增加一个 γ 计算成本分量。
为了更准确地估计算法性能,采用了两步法来计算链路利用率:
1. 给定一个集体操作、要使用的算法、MPI 等级或核心数量以及数据长度信息,模式生成器会生成每对 MPI 等级之间的通信交换列表。
2. 将模式生成器生成的数据输入到链路使用模块。该模块根据通信交换列表,计算给定两级网络中每条链路上将流动的流量。
2. 拓扑无关算法
对于大消息大小的各种集体操作,通常会使用拓扑无关算法。以下是一些常用算法及其成本:
| 操作 | 算法 | 成本(n 字节) |
| — | — | — |
| Scatter | 二项树 | $\frac{p - 1}{p}n\beta$ |
| Gather | 二项树 | $\frac{p - 1}{p}n\beta$ |
| Allgather | 环、递归加倍 | $\frac{p - 1}{p}n\beta$ |
| Broadcast | DeGeijn 的 Scatter 与 Allgather 结合 | $2\frac{p - 1}{p}n\beta$ |
| Reduce - Scatter | 成对交换 | $\frac{p - 1}{p}(n\beta + n\gamma)$ |
| Reduce | Rabenseifner