task_time(任务调度信息)
任务调度信息数据timeline信息在msprof_*.json文件的Ascend Hardware层级展示,summary信息在task_time_*.csv文件汇总,用于识别AI任务运行时的调度耗时。
支持的型号
msprof_*.json文件中的任务调度信息数据说明
msprof_*.json文件中的任务调度信息数据在Ascend Hardware中的各个Stream呈现,通过记录AI任务运行时,各个Task在不同加速器下的执行耗时,可以直观判断任务调度耗时长短。
msprof_*.json文件中的任务调度信息数据示例如下:
关键字段说明如下。
字段名 |
字段含义 |
---|---|
Title |
选择某个组件的接口名称。 |
Start |
显示界面中时间轴上的时刻点,chrome trace自动对齐,单位ms。 |
Wall Duration |
表示当前接口调用耗时,单位ms。 |
Task Time(us) |
AI CPU算子的Task任务耗时,单位us。 |
Reduce Duration(us) |
ALL REDUCE算子的集合通信时间,单位us。 |
Model Id |
模型ID。 |
Task Type |
执行该Task的加速器类型,包含AI CORE、AI VECTOR CORE、AI CPU等。 |
Stream Id |
该Task所处的Stream ID。在Ascend Hardware下的Stream Id为该任务的完整逻辑流ID,而在右侧Timeline内的各个接口的Stream Id属性则为该接口的物理流ID(Physic Stream Id)。 |
Task Id |
对应的Task ID。 |
Subtask Id |
对应的Subtask ID。 |
Aicore Time(ms) |
当所有的Block被同时调度,且每个Block的执行时长相等时,该Task在AI Core上的理论执行时间,单位ms。通常情况下,不同的Block开始调度时间略有差距,故该字段值略小于Task在AI Core上的实际执行时间。手动调频、功耗超出默认功耗值时动态调频以及Atlas 300V/Atlas 300I Pro情况下该数据不准确,不建议参考。 |
Total Cycle |
该Task在AI Core上执行的cycle总数,由所有的Block的执行cycle数累加而成。 |
Receive Time |
Device收到内存拷贝Task的信息接收时间,单位us。仅MemcopyAsync接口展示。 |
Start Time |
内存拷贝Task开始拷贝的时间,单位us。仅MemcopyAsync接口展示。 |
End Time |
内存拷贝Task结束拷贝的时间,单位us。仅MemcopyAsync接口展示。 |
task_time_*.csv文件说明(
Atlas 200/300/500 推理产品
)(
Atlas 200I/500 A2 推理产品
)
task_time_*.csv文件内容格式示例如下:
可以通过查看Task的耗时占比、平均执行时间、最短耗时、最长耗时、等待时间、执行时间等,判断Task耗时长的具体原因。
字段名 |
字段含义 |
---|---|
Device_id |
设备ID。 |
Time(%) |
总耗时占比。 |
Time(us) |
总耗时,单位us。 |
Count |
对应的Task被执行的次数。 |
Avg/Min/Max |
平均执行时间、最短耗时、最长耗时,单位us。 |
Waiting |
对应Task总计waiting时间,单位us。 |
Running |
对应Task总计running时间。表示Task的实际运行时间,单位us,过长的Task运行时间可能意味着算子实现存在问题。 |
Pending |
对应Task总计pending时间,单位us。 |
Type |
对应Task 的类型。 |
API |
对应的API名称。 |
Task ID |
Task任务的ID。 |
OP Name |
对应的算子名称。 |
Stream ID |
该Task所处的Stream ID。 |
task_time_*.csv文件说明(
Atlas 推理系列产品
)(
Atlas 训练系列产品
)(
Atlas A2 训练系列产品
)
task_time_*.csv文件内容格式示例如下:
可以通过查看Task的Top耗时对应的算子,根据该算子的具体实现来判断算子是否存在问题。
字段名 |
字段含义 |
---|---|
Device_id |
设备ID。 |
kernel_name |
kernel的名称。显示为N/A表示为非计算类算子。 |
kernel_type |
kernel的类型,包含:KERNEL_AICORE、KERNEL_AICPU等。 |
stream_id |
该Task所处的Stream ID。 |
task_id |
Task任务的ID。 |
task_time(us) |
Task耗时,包含调度到加速器的时间、加速器上的执行时间以及结束响应时间,单位us。 |
task_start(us) |
Task开始时间,单位us。 |
task_stop(us) |
Task结束时间,单位us。 |