下载
中文
注册

简介

HCCL提供了C与Python两种语言的开发接口,用于实现分布式能力。
  • C语言接口用于实现单算子模式下的框架适配,实现分布式能力。

    针对PyTorch框架网络,HCCL单算子API已嵌入到Ascend Extension for PyTorch后端代码中,PyTorch用户直接使用PyTorch原生集合通信API,即可实现分布式能力。

  • Python语言接口用于实现图模式下的框架适配,当前仅用于实现TensorFlow网络在昇腾AI处理器执行分布式优化。

本章节针对如何调用HCCL的C语言接口进行集合通信功能的开发进行介绍。

开发者调用HCCL C语言接口实现集合通信功能的主要开发流程如下所示。

图1 集合通信操作流程
  1. 首先进行集群信息配置,创建通信域句柄,并初始化HCCL通信域。
  2. 实现通信操作,HCCL通信操作包含两大类:点对点通信与集合通信。
    • 点对点通信,指在多NPU环境下两个NPU之间直接传输数据的过程,常用于pipeline并行场景下对激活值的数据收发。HCCL提供了不同粒度的点对点通信,包括单rank到单rank的单收单发接口,以及多个rank之间的批量收发接口。
    • 集合通信,指多个NPU共同参与进行数据传输操作,例如AllReduce,AllGather,Broadcast等,常用于大规模集群中不同NPU之间的梯度同步和参数更新等操作。集合通信操作可让所有计算节点并行、高效、有序执行数据交换,提升数据传输效率。
  3. 集合通信操作完成后,需要释放相关资源,销毁通信域。