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。  | 
       
| 
          AI CPU  | 
        
          Task Time(us):Task任务耗时,单位us。  | 
       
| 
          ALL REDUCE  | 
        
          Reduce Duration(us):集合通信时间,单位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的信息接收时间。仅MemcopyAsync接口展示。  | 
       
| 
          Start Time  | 
        
          内存拷贝Task开始拷贝的时间。仅MemcopyAsync接口展示。  | 
       
| 
          End Time  | 
        
          内存拷贝Task结束拷贝的时间。仅MemcopyAsync接口展示。  | 
       
task_time_*.csv文件说明(Atlas 200/300/500 推理产品)
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 训练系列产品)(Atlas 200I/500 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。  |