NB【免费下载链接】hccl集合通信库Huawei Collective Communication Library简称HCCL是基于昇腾AI处理器的高性能集合通信库为计算集群提供高性能、高可靠的通信方案项目地址: https://gitcode.com/cann/hccl算法描述集合通信中Ring算法通信步数为$O(N-1)$其中N表示参与集合通信的rank数量随着网络规模的增加通信开销也会显著增加。RHD算法虽然将通信步数减少到了$log_2⁡N$但在rank数量不是2的幂时需要进行数据合并操作导致通信数据量增加。而NB算法Nonuniform Bruck非均匀的数据块通信算法通过动态调整步长的多重环状结构实现不同rank数量下均保持通信步数为$⌈log_2⁡N⌉$同时避免了额外的通信数据量增长。rank size是2的幂时NB算法的通信过程如下图所示以rank size等于4为例。图 1rank size为4时NB算法通信过程 ![](https://raw.gitcode.com/cann/hccl/raw/20ed5a0bc0d136005da3f0581544829bd02123b8/docs/user_guide/coll_algo_intro/figures/nb_algo_4rank_flow.png rank-size为4时NB算法通信过程?utm_sourcegitcode_repo_files)rank size不是2的幂时NB算法的通信过程如下图所示以rank size等于5为例。图 2rank size为5时NB算法通信过程![](https://raw.gitcode.com/cann/hccl/raw/20ed5a0bc0d136005da3f0581544829bd02123b8/docs/user_guide/coll_algo_intro/figures/nb_algo_5rank_flow.png rank-size为5时NB算法通信过程?utm_sourcegitcode_repo_files)对于ReduceScatter和AllGather算子通信步数均为$⌈log_2⁡N⌉$。针对ReduceScatter算子每一步通信中每张卡向通信步长为$2^k(0 \leq k⌈log2(N)⌉)$的目标卡发送数据每步发送数据的份数为$⌊(N-12^k)/2^{k1}⌋$。对于AllGather算子每一步的通信步长递减而通信数据量递增。当卡数不是2的幂时最后一步的通信数据量为$N-2^{⌊log2(N)⌋}$。NB算法同样适用于“星型”和“胖树”拓扑算法的时间复杂度为$⌈log_2⁡N⌉$。耗时计算表 1NB算法中各操作耗时操作耗时ReduceScatter$\lceil log(p)\rceil\alpha \frac{p−1}{p}n\beta \frac{p−1}{p}n\gamma$AllGather$\lceil log(⁡p)\rceil\alpha \frac{p−1}{p}n\beta$AllReduce实现为ReduceScatter AllGather 耗时为$2\lceil log(⁡p)\rceil\alpha 2\frac{p−1}{p}n\beta \frac{p−1}{p}n\gamma$Scatter$\lceil log(⁡p)\rceil\alpha \frac{p−1}{p}n\beta$Broadcast实现为Scatter AllGather耗时为$2\lceil log(⁡p)\rceil\alpha 2\frac{p−1}{p}n\beta$【免费下载链接】hccl集合通信库Huawei Collective Communication Library简称HCCL是基于昇腾AI处理器的高性能集合通信库为计算集群提供高性能、高可靠的通信方案项目地址: https://gitcode.com/cann/hccl创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考