昇腾社区首页
中文
注册
开发者
下载

Ring

算法描述

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

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

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

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

耗时计算

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

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

操作

耗时

Scatter

Gather

Broadcast

实现为Scatter + AllGather,耗时为:

Reduce

实现为ReduceScatter + Gather,耗时为:

ReduceScatter

AllGather

Allreduce

实现为ReduceScatter + AllGather,耗时为: