HCCL提供了深度学习训练场景中服务器间高性能集合通信功能,其执行流程如下:
通信过程分为三个阶段:
阶段一、通信初始化:获取必要的集合通信参数配置并初始化网络设备;
阶段二、建立通信连接:建立socket连接并交换通信两端的通信参数和内存信息;
阶段三、执行通信操作:通过Notify同步设备执行状态,传递内存数据。
通信初始化阶段不涉及昇腾设备之间的交互。
建立通信连接阶段,HCCL根据用户提供的集群信息结合网络拓扑与其他卡进行建链并交换用于通信的参数信息。如果在建链超时时间阈值(默认120s,可通过环境变量HCCL_CONNECT_TIMEOUT配置)内未得到其他卡的及时响应,会上报建链超时错误并退出训练。
通信操作执行阶段HCCL会根据通信算法编排NOTIFY/SDMA等task并通过runtime下发给昇腾设备task调度器,设备根据编排信息调度并执行task。其中Notify类task用于卡间同步,Notify wait会阻塞task流执行直到对应的Notify record到达,以确保后续的通信操作执行时彼此的内存处于ready状态。
单卡问题、通信链路问题均可能会导致集群出现大量的超时错误,在定位集群问题时需要锁定问题出现位置,因此需要收集整个集群的日志信息。