Ring
算法描述
Ring算法,所有的NPU以环形相连,每张卡都有左手卡与右手卡,一个负责数据接收,一个负责数据发送,循环完成梯度累加,再循环做参数同步。

Ring算法适用于“星型”或“胖树”拓扑互联,其特点是通过Ring环将所有NPU设备的单端口双工链路串联起来。
Ring算法实现AllReduce算子的流程如下图所示,每一步依次给下游发送对应的数据块,沿着环转一圈之后完成ReduceScatter阶段,再沿环转一圈完成AllGather阶段。

Ring算法的时间复杂度是O(n-1),n为Ring环上的NPU设备个数。
耗时计算
整体思路为:将所有参与的节点构成环,每个节点只和左右节点通信,如果节点数为p,则需要的通信次数为p-1,每次交换
的数据。
|
操作 |
耗时 |
|---|---|
|
Scatter |
|
|
Gather |
|
|
Broadcast |
实现为Scatter + AllGather,耗时为:
|
|
Reduce |
实现为ReduceScatter + Gather,耗时为:
|
|
ReduceScatter |
|
|
AllGather |
|
|
Allreduce |
实现为ReduceScatter + AllGather,耗时为:
|
父主题: 集合通信算法介绍






