hccl_statistic(集合通信算子统计信息)
集合通信算子和计算及通信流水掩盖数据timeline信息在msprof_*.json文件的HCCL层级展示,summary信息在hccl_statistic_*.csv文件汇总,以及在msprof*.json下展示“Overlap Analysis”计算及通信的流水掩盖分析数据。
集合通信算子数据只有在多卡、多机或集群等存在卡间通信的场景下才能被采集并解析出性能数据。
支持的型号
msprof_*.json文件的HCCL层级数据说明
msprof_*.json文件HCCL层数据如下图所示。
多卡、多机或集群场景时各Device之间存在通信,形成各个通信域(Group * Communication),HCCL层按照各个通信域进行排列,收集通信算子的耗时,该文件下可以直观找出耗时最长的通信算子。
字段名 |
字段含义 |
---|---|
公共信息 |
|
Group * Communication |
通信域下的通信算子。一个卡(Rank)可以存在于不同的通信域中,一个Group标识当前卡在当前通信域的行为。 |
Plane ID |
网络平面ID。对多个收发通信链路的并行调度执行,每个Plane就是一个并发通信维度。 |
Title |
选择某个组件的接口名称。 |
Start |
显示界面中时间轴上的时刻点,chrome trace自动对齐,单位ms。 |
Wall Duration |
表示当前接口调用耗时,单位ms。 |
Self Time |
表示当前指令本身执行耗时,单位ms。 |
通信大算子信息 |
|
connection_id |
CANN层API向NPU算子下发时二者关联的标识。 |
model id |
模型ID。 |
data_type |
数据类型。 |
alg_type |
通信算子各阶段的算法类型,包括:MESH、RING、NB、HD、NHR、PIPELINE、PAIRWISE、STAR。 |
count |
数据传输的数量。 |
通信小算子信息 |
|
notify id |
notify唯一ID。 |
duration estimated(us) |
预估任务持续时间,单位us。 |
stream id |
Stream任务的ID。 |
task id |
Task任务的ID。 |
task type |
Task类型。 |
src rank |
源Rank。 |
dst rank |
目的Rank。 |
transport type |
传输类型,包含:LOCAL、SDMA、RDMA。 |
size(Byte) |
数据量,单位Byte。 |
data type |
数据类型。 |
link type |
链路类型,包含:HCCS、PCIe、RoCE。 |
bandwidth(GB/s) |
带宽大小,单位GB/s。 |
计算及通信的流水掩盖分析
msprof_*.json下的“Overlap Analysis”为计算及通信的流水掩盖分析数据,由--task-time和--hccl开关控制。如图3所示。
计算和通信存在并行,那么可通过查看流水掩盖的重叠时间(计算和通信并行的时间)从而判断计算通信效率。
字段名 |
字段含义 |
---|---|
Communication |
通信时间。单卡场景无通信,不展示该字段。 |
Communication(Not Overlapped) |
无掩盖的通信时间。单卡场景无通信,不展示该字段。 |
Computing |
计算时间。 |
Free |
间隙时间。 |
Start |
表示当前接口开始调用的时刻点,单位ms。 |
Wall Duration |
表示当前接口调用耗时,单位ms。 |
hccl_statistic_*.csv文件说明
hccl_statistic_*.csv文件内容格式示例如下:
hccl_statistic_*.csv为集合通信算子统计信息,通过集合通信算子统计信息了解该类算子的耗时,以及各HCCL算子在集合通信内部的耗时占比,从而判断某个算子是否存在优化空间。
字段名 |
字段含义 |
---|---|
Device_id |
设备ID。 |
OP Type |
集合通信算子类型。 |
Count |
集合通信算子执行次数。 |
Total Time(us) |
集合通信算子执行总耗时,单位us。 |
Min Time(us) |
集合通信算子执行最小耗时,单位us。 |
Avg Time(us) |
集合通信算子执行平均耗时,单位us。 |
Max Time(us) |
集合通信算子执行最大耗时,单位us。 |
Ratio(%) |
集合通信算子执行耗时与整体集合通信耗时占比。 |