下载
中文
注册

集合通信算法

针对同一个通信算子,随着网络拓扑、通信数据量、硬件资源等的不同,往往会采用不同的通信算法,从而最大化集群通信性能。HCCL提供了Mesh、Ring、Recursive Halving-Doubling(RHD)、NHR(Nonuniform Hierarchical Ring)、NB(Nonuniform Bruck)、Pipeline和Pairwise几种拓扑算法用于Server内和Server间的集合通信。

Server内通信算法

HCCL通信域Server内支持Mesh、Ring和Star三种算法,具体使用的算法根据硬件拓扑自动选择,用户无须配置也不支持配置。

Server间通信算法

HCCL通信域Server间支持Ring、RHD、NHR、NB、Pipeline、Pairwise几种算法的自适应选择,自适应算法会根据产品形态、数据量和Server个数进行选择,用户默认无需配置,大致算法选择逻辑如下:
  • Ring算法:基于环结构的并行调度算法,适用于小规模节点数(例如<32机,且非2幂)和中大规模通信数据量(例如>=256M)的场景。
  • RHD算法:递归二分和倍增算法,支持如下两种场景:
    • 通信域节点个数为2的整数次幂,任意数据量。
    • 中小通信数据量(例如<256M),任意节点数。
  • NHR算法:非均衡的层次环算法,适用于中大规模节点数(例如>32机,且非2的整数次幂)和中大规模通信数据量(例如>=256M)的场景。
  • NB算法:非均匀的数据块通信算法,适用于中大规模节点数(例如>32机,且非2的整数次幂)和中大规模通信数据量(例如>=256M)的场景。
  • Pipeline算法:流水并行算法,适用于多机多卡且数据量较大(例如>=1M * RankSize)的场景。
  • Pairwise算法:比较算法,仅用于AllToAll、AlltoAllV与AlltoAllVC算子,适用于数据量较小(例如<=1M * RankSize)的场景。
  • cann-hccl仓当前开放的算法有Mesh、Ring、RHD、PairWise、Star,开发者可访问Gitee-cann-hccl详细了解对应实现。
  • 开发者若想指定集合通信Server间跨机通信算法,可通过环境变量HCCL_ALGO进行设置。