Mesh是FullMesh互联拓扑内的基础算法,是NPU之间的全连接,任意两个NPU之间可以直接进行数据收发。
Mesh算法实现AllReduce算子的流程如下图所示,每个NPU并发的使用多路HCCS链路从对端读取或者写入数据,使双工互联链路的双向带宽同时得到利用。
Mesh算法的时间复杂度是O(1)。
表 1 Mesh算法中各操作计算耗时
操作 | 耗时 |
---|---|
Scatter | |
Gather | |
Broadcast | 实现为Scatter + AllGather,耗时为: $ 2\alpha + \frac{2}{p}n\beta $ |
Reduce | 实现为ReduceScatter + Gather,耗时为: $ 2\alpha + \frac{2}{p}n\beta + \frac{p-1}{p}n\gamma $ |
ReduceScatter | $ \alpha+\frac{1}{p}n\beta+\frac{p-1}{p}n\gamma $ |
AllGather | |
AllReduce | 实现为ReduceScatter + AllGather,耗时为: |