Skip to content

Latest commit

 

History

History
31 lines (20 loc) · 1.79 KB

Ring.md

File metadata and controls

31 lines (20 loc) · 1.79 KB

Ring

算法描述

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

Ring算法适用于“星型”或“胖树”拓扑互联,其特点是通过Ring环将所有NPU设备的单端口双工链路串联起来。

Ring算法实现AllReduce算子的流程如下图所示,每一步依次给下游发送对应的数据块,沿着环转一圈之后完成ReduceScatter阶段,再沿环转一圈完成AllGather阶段。

Ring算法的时间复杂度是O(n-1),n为Ring环上的NPU设备个数。

耗时计算

整体思路为:将所有参与的节点构成环,每个节点只和左右节点通信,如果节点数为p,则需要的通信次数为p-1,每次交换$\frac{1}{p}$的数据。

表 1 Ring算法中各操作计算耗时

操作 耗时
Scatter $ (p-1)(\alpha+\frac np\beta)=(p-1)\alpha+\frac {p-1}p n\beta $
Gather $ (p-1)(\alpha+\frac np\beta)=(p-1)\alpha+\frac {p-1}p n\beta $
Broadcast $ (p-1)(\alpha+n\beta)=(p-1)\alpha+ (p-1)n\beta $
Reduce $ (p-1)(\alpha+n\beta + n\gamma)=(p-1)\alpha+ (p-1)n\beta +(p-1)n\gamma$
ReduceScatter $ (p-1)(\alpha+\frac{n}{p}\beta+\frac{n}{p}\gamma)=(p-1)\alpha+\frac{p-1}{p}n\beta+\frac{p-1}{p}n\gamma $
Allgather $ (p-1)(\alpha+\frac{n}{p}\beta)=(p-1)\alpha+\frac{p-1}{p}n\beta $
AllReduce 实现为ReduceScatter + Allgather:
$ 2(p-1)\alpha+2\frac{p-1}{p}n\beta+\frac{p-1}{p}n\gamma $