CANN/hccl Profiling通信算子分析
Profiling数据中通信算子行为分析【免费下载链接】hccl集合通信库Huawei Collective Communication Library简称HCCL是基于昇腾AI处理器的高性能集合通信库为计算集群提供高性能、高可靠的通信方案项目地址: https://gitcode.com/cann/hccl通信算子下发通信算子的下发在Profiling数据中的CANN层如图所示一个“AscendCLhcom_allReduce_”则对应一次allreduce算子下发集合通信算子在host侧编排下发并在device侧异步执行。一般来说通信算子的下发时间和异步执行时间互相掩盖可以充分利用device的资源。当通信算子的下发成为瓶颈时device侧需等待通信算子下发此时会出现空泡针对利用率下降的情况需要优化集合通信算子的下发性能常见的优化手段包括由于通信算子的下发是在host侧执行因此下发的耗时受host侧CPU的调度影响可通过CPU绑核的方式防止CPU切核带来的性能损耗提升通信算子的下发性能。通过环境变量切换为AIV模式执行export HCCL_OP_EXPANSION_MODEAIV但需注意AIV模式的支持场景有限若业务中存在多个通信域并发执行的场景会出现互相抢核导致死锁等不可预期的行为。通信算子执行通信算子的执行对应Profiling数据中的Communication(HCCL)层如下图所示Group表示一个通信域。Plane0-X表示不同通信流每个Plane对应一个通信流HCCL的通信算子编排会通过多流并发来充分利用HCCS物理链路资源。hcom_allReduce_xx表示通信算子的执行流程在详细信息中可以看到通信算子的耗时、数据量及数据类型等信息。由于通信算子由多个notify同步任务及memcpy内存拷贝任务编排而成若需要在Profiling中显示具体的通信任务编排信息需至少采集level 1级别的Profiling数据**。**同步任务Notify Record同步任务置notify寄存器为1。Notify Wait同步任务等待notify寄存器为1然后将其清0。RDMASend机间RoCE同步任务置对端notify寄存器为1。同时对于同步任务可以从任务的详细信息中获取到任务的耗时、notify_id、本端src rank及对端dst rank等。数据通信任务**Memcpy**内存拷贝任务机内或者片内的内存拷贝。**Reduce_Inline**内存拷贝任务数据拷贝的同时完成随路归约计算。**RDMASend**机间Roce通信任务对应着机间的内存拷贝任务。同时对于数据通信任务可以从任务的详细信息中获取到任务的耗时、本端src rank及对端dst rank、数据量size、带宽bandwidth等。[!NOTE]说明在Profiling数据中RDMASend任务会对应同步或者数据通信任务可通过其数据量分析区分是同步任务还是数据通信任务同步任务的数据量为固定的4字节而数据通信任务的数据量以实际通信量为准。若RDMASend任务为数据通信任务时其任务执行的耗时并不等于实际的通信耗时只是将通信任务的WQE下发到QP队列中的耗时实际的通信耗时可参考数据量和带宽值计算得到或参考其后续紧跟着的下一个notify wait任务的耗时。【免费下载链接】hccl集合通信库Huawei Collective Communication Library简称HCCL是基于昇腾AI处理器的高性能集合通信库为计算集群提供高性能、高可靠的通信方案项目地址: https://gitcode.com/cann/hccl创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考