msopprof模式性能数据
ArithmeticUtilization(Cube及Vector类型指令耗时和占比)
Cube及Vector类型指令的cycle占比数据ArithmeticUtilization.csv,建议优化算子逻辑,减少冗余计算指令。详情介绍请参见下表中的字段说明。
Atlas A3 训练系列产品/Atlas A3 推理系列产品及Atlas A2 训练系列产品/Atlas A2 推理系列产品
图 1 ArithmeticUtilization.csv文件

关键字段说明如下。
表 1 字段说明
| 字段名 | 字段解释 |
|---|---|
| block_id | Task运行切分数量,对应Task运行时配置的核数。 |
| sub_block_id | Block上Vector\Cube核的ID。 |
| aic_time(us) | 该Task被分配到每个AI Cube Core计算单元上后,每个AI Cube Core计算单元上的执行时间,单位us。 |
| aic_total_cycles | 该Task被分配到每个AI Cube Core计算单元上后,每个AI Cube Core计算单元上的执行的cycle总数。 |
| aiv_time(us) | 该Task被分配到每个AI Vector Core计算单元上后,每个AI Vector Core计算单元上的执行时间,单位us。 |
| aiv_total_cycles | 该Task被分配到每个AI Vector Core计算单元上后,每个AI Vector Core计算单元上的执行的cycle总数。 |
| aic_cube_ratio | 代表Cube单元指令的cycle数在total cycle数中的占用比。 |
| aic_cube_fp16_ratio | 代表Cube fp16类型指令的cycle数在total cycle数中的占用比。 |
| aic_cube_int8_ratio | 代表Cube int8类型指令的cycle数在total cycle数中的占用比。 |
| aic_cube_fops | 代表Cube类型的浮点运算数,即计算量,可用于衡量算法/模型的复杂度,其中fops表示floating point operations。 |
| aic_cube_total_instr_number | 代表Cube指令的总条数,包括fp和int类型。 |
| aic_cube_fp_instr_number | 代表Cube fp类型指令的总条数。 |
| aic_cube_int_instr_number | 代表Cube int类型指令的总条数。 |
| aiv_vec_ratio | 代表Vec单元指令的cycle数在total cycle数中的占用比。 |
| aiv_vec_fp32_ratio | 代表Vec fp32类型指令的cycle数在total cycle数中的占用比。 |
| aiv_vec_fp16_ratio | 代表Vec fp16类型指令的cycle数在total cycle数中的占用比。 |
| aiv_vec_int32_ratio | 代表Vec int32类型指令的cycle数在total cycle数中的占用比。 |
| aiv_vec_int16_ratio | 代表Vec int16类型指令的cycle数在total cycle数中的占用比。 |
| aiv_vec_misc_ratio | 代表Vec misc类型指令的cycle数在total cycle数中的占用比。 |
| aiv_vec_fops | 代表Vector类型浮点运算数,即计算量,可用于衡量算法/模型的复杂度,其中fops表示floating point operations。 |
Atlas 推理系列产品
图 2 ArithmeticUtilization.csv文件

关键字段说明如下。
表 2 字段说明
| 字段名 | 字段解释 |
|---|---|
| aic_time(us) | 该Task被分配到每个AI Core计算单元上后,每个AI Core计算单元上的执行时间,单位us。 |
| aic_total_cycles | 该Task被分配到每个AI Core计算单元上后,每个AI Core计算单元上的执行的cycle总数。 |
| aic_cube_ratio | 代表Cube单元指令的cycle数在total cycle数中的占用比。 |
| aic_cube_fp16_ratio | 代表Cube fp16类型指令的cycle数在total cycle数中的占用比。 |
| aic_cube_int8_ratio | 代表Cube int8类型指令的cycle数在total cycle数中的占用比。 |
| aic_cube_fops | 代表Cube类型的浮点运算数,即计算量,可用于衡量算法/模型的复杂度,其中fops表示floating point operations。 |
| aic_cube_total_instr_number | 代表Cube指令的总条数,包括fp和int类型。 |
| aic_vec_ratio | 代表Vec单元指令的cycle数在total cycle数中的占用比。 |
| aic_vec_fp32_ratio | 代表Vec fp32类型指令的cycle数在total cycle数中的占用比。 |
| aic_vec_fp16_ratio | 代表Vec fp16类型指令的cycle数在total cycle数中的占用比。 |
| aic_vec_int32_ratio | 代表Vec int32类型指令的cycle数在total cycle数中的占用比。 |
| aic_vec_int16_ratio | 代表Vec int16类型指令的cycle数在total cycle数中的占用比。 |
| aic_vec_misc_ratio | 代表Vec misc类型指令的cycle数在total cycle数中的占用比。 |
| aic_vec_fops | 代表Vector类型浮点运算数,即计算量,可用于衡量算法/模型的复杂度,其中fops表示floating point operations。 |
Atlas 350 加速卡
图 3 ArithmeticUtilization.csv文件

关键字段说明如下。
表 3 字段说明
| 字段名 | 字段解释 |
|---|---|
| block_id | Task运行切分数量,对应Task运行时配置的核数。 |
| sub_block_id | Block上Vector\Cube核的ID。 |
| aic_time(us) | 该Task被分配到每个AI Cube Core计算单元上后,每个AI Cube Core计算单元上的执行时间,单位us。 |
| aic_total_cycles | 该Task被分配到每个AI Cube Core计算单元上后,每个AI Cube Core计算单元上的执行的cycle总数。 |
| aic_cube_ratio | 代表Cube单元指令的cycle数在total cycle数中的占用比。 |
| aic_cube_fp_ratio | 代表Cube fp类型指令的cycle数在total cycle数中的占用比。 |
| aic_cube_int_ratio | 代表Cube int类型指令的cycle数在total cycle数中的占用比。 |
| aic_cube_total_instr_number | 代表Cube指令的总条数,包括fp和int类型。 |
| aic_cube_fp_instr_number | 代表Cube fp类型指令的总条数。 |
| aic_cube_int_instr_number | 代表Cube int类型指令的总条数。 |
| aiv_time(us) | 该Task被分配到每个AI Vector Core计算单元上后,每个AI Vector Core计算单元上的执行时间,单位us。 |
| aiv_total_cycles | 该Task被分配到每个AI Vector Core计算单元上后,每个AI Vector Core计算单元上的执行的cycle总数。 |
| aiv_vec_ratio | 代表Vec单元指令的cycle数在total cycle数中的占用比。 |
| aiv_vec_vf_ratio | 代表Vec vf类型指令的cycle数在total cycle数中的占用比。 |
| aiv_vec_sfu_ratio | 代表Vec sfu类型指令的cycle数在total cycle数中的占用比。 |
| aiv_vec_simt_vf_ratio | 代表Vec simt vf类型指令的cycle数在total cycle数中的占用比。 |
L2Cache(L2 Cache命中率)
L2 Cache命中率数据L2Cache.csv,影响MTE2(Memory Transfer Engine,数据搬入单元),建议合理规划数据搬运逻辑,增加命中率。详情介绍请参见下表中的字段说明。
Atlas A3 训练系列产品/Atlas A3 推理系列产品和Atlas A2 训练系列产品/Atlas A2 推理系列产品
图 1 L2Cache.csv文件

关键字段说明如下。
表 1 字段说明
| 字段名 | 字段解释 |
|---|---|
| block_id | Task运行切分数量,对应Task运行时配置的核数。 |
| sub_block_id | Task运行使用的每个block名称和序号。 |
| aic_time(us) | 该Task被分配到每个AI Cube Core计算单元上后,每个AI Cube Core计算单元上的执行时间,单位us。 |
| aic_total_cycles | 该Task被分配到每个AI Cube Core计算单元上后,每个AI Cube Core计算单元上的执行的cycle总数。 |
| aiv_time(us) | 该Task被分配到每个AI Vector Core计算单元上后,每个AI Vector Core计算单元上的执行时间,单位us。 |
| aiv_total_cycles | 该Task被分配到每个AI Vector Core计算单元上后,每个AI Vector Core计算单元上的执行的cycle总数。 |
| ai*_write_cache_hit | 写cache命中的次数。 |
| ai*_write_cache_miss_allocate | 写cache缺失后重新分配缓存的次数。 |
| ai*_r*_read_cache_hit | 读r*通道cache命中次数。 |
| ai*_r*_read_cache_miss_allocate | 读r*通道cache缺失后重新分配的次数。 |
| ai*_write_hit_rate(%) | 写cache命中率。 |
| ai*_read_hit_rate(%) | 读cache命中率。 |
| ai*_total_hit_rate(%) | 读/写cache命中率。 |
Atlas 推理系列产品
图 2 L2Cache.csv文件

关键字段说明如下。
表 2 字段说明
| 字段名 | 字段解释 |
|---|---|
| aic_l2_cache_hit_rate(%) | 内存访问请求命中L2次数与总次数的比值。 |
Atlas 350 加速卡
图 3 L2Cache.csv文件

关键字段说明如下。
表 3 字段说明
| 字段名 | 字段解释 |
|---|---|
| block_id | Task运行切分数量,对应Task运行时配置的核数。 |
| sub_block_id | Task运行使用的每个block名称和序号。 |
| aic_time(us) | 该Task被分配到每个AI Cube Core计算单元上后,每个AI Cube Core计算单元上的执行时间,单位us。 |
| aic_total_cycles | 该Task被分配到每个AI Cube Core计算单元上后,每个AI Cube Core计算单元上的执行的cycle总数。 |
| aiv_time(us) | 该Task被分配到每个AI Vector Core计算单元上后,每个AI Vector Core计算单元上的执行时间,单位us。 |
| aiv_total_cycles | 该Task被分配到每个AI Vector Core计算单元上后,每个AI Vector Core计算单元上的执行的cycle总数。 |
| ai*_read_close_hit | 读close cache命中次数。 |
| ai*_read_close_miss | 读close cache缺失次数。 |
| ai*_read_close_victim | 读close cache驱逐次数。 |
| ai*_read_far_hit | 读far cache命中次数。 |
| ai*_read_far_miss | 读far cache缺失次数。 |
| ai*_read_far_victim | 读far cache驱逐次数。 |
| ai*_read_hit_rate(%) | 读cache命中率。 |
| ai*_write_close_hit | 写close cache命中次数。 |
| ai*_write_close_miss | 写close cache缺失次数。 |
| ai*_write_close_victim | 写close cache驱逐次数。 |
| ai*_write_far_hit | 写far cache命中次数。 |
| ai*_write_far_miss | 写far cache缺失次数。 |
| ai*_write_far_victim | 写far cache驱逐次数。 |
| ai*_write_hit_rate(%) | 写cache命中率。 |
Memory(内存读写带宽速率)
UB/L1/L2/主存储器采集内存读写带宽速率数据Memory.csv。详情介绍请参见下表中的字段说明。
单位GB/s表示每秒传输1GB的数据量。
Atlas A3 训练系列产品/Atlas A3 推理系列产品及Atlas A2 训练系列产品/Atlas A2 推理系列产品
图 1 Memory.csv文件

关键字段说明如下。
表 1 字段说明
| 字段名 | 字段解释 |
|---|---|
| block_id | Task运行切分数量,对应Task运行时配置的核数。 |
| sub_block_id | Task运行使用的每个block名称和序号。 |
| aic_time(us) | 该Task被分配到每个AI Cube Core计算单元上后,每个AI Cube Core计算单元上的执行时间,单位us。 |
| aic_total_cycles | 该Task被分配到每个AI Cube Core计算单元上后,每个AI Cube Core计算单元上的执行的cycle总数。 |
| aiv_time(us) | 该Task被分配到每个AI Vector Core计算单元上后,每个AI Vector Core计算单元上的执行时间,单位us。 |
| aiv_total_cycles | 该Task被分配到每个AI Vector Core计算单元上后,每个AI Vector Core计算单元上的执行的cycle总数。 |
| aiv_ub_to_gm_bw(GB/s) | 代表ub向gm写入的数据量对应total cycle的带宽速率,单位GB/s。 |
| aiv_gm_to_ub_bw(GB/s) | 代表gm向ub写入的数据量对应total cycle的带宽速率,单位GB/s。 |
| aic_l1_read_bw(GB/s) | 代表本算子中l1单元读取其他所有单元数据时,对应的total cycle的带宽速率,单位GB/s。 |
| aic_l1_write_bw(GB/s) | 代表本算子中l1单元写入其他所有单元数据时,对应的total cycle的带宽速率,单位GB/s。 |
| ai*_main_mem_read_bw(GB/s) | 代表主存储器读取其他所有单元数据时,对应的total cycle的带宽速率,单位GB/s。 |
| ai*_main_mem_write_bw(GB/s) | 代表主存储器写入其他所有单元数据时,对应的total cycle的带宽速率,单位GB/s。 |
| aic_mte1_instructions | 代表MTE1类型指令条数。 |
| aic_mte1_ratio | 代表MTE1类型指令的cycle数在total cycle数中的占用比。 |
| ai*_mte2_instructions | 代表MTE2类型指令条数。 |
| ai*_mte2_ratio | 代表MTE2类型指令的cycle数在total cycle数中的占用比。 |
| ai*_mte3_instructions | 代表MTE3类型指令条数。 |
| ai*_mte3_ratio | 代表MTE3类型指令的cycle数在total cycle数中的占用比。 |
| read_main_memory_datas(KB) | 读主存储器数据总量。 |
| write_main_memory_datas(KB) | 写主存储器数据总量。 |
| GM_to_L1_datas(KB) | GM到L1的数据搬运量。 |
| L1_to_GM_datas(KB)(estimate) | L1到GM的数据搬运量,估算值。 |
| L0C_to_L1_datas(KB) | L0C到L1的数据搬运量。 |
| L0C_to_GM_datas(KB) | L0C到GM的数据搬运量。 |
| GM_to_UB_datas(KB) | GM到UB的数据搬运量。 |
| UB_to_GM_datas(KB) | UB到GM的数据搬运量。 |
| GM_to_L1_bw_usage_rate(%) | GM到L1通路带宽使用率。 |
| L1_to_GM_bw_usage_rate(%)(estimate) | L1到GM通路带宽使用率,估算值。 |
| L0C_to_L1_bw_usage_rate(%) | L0C到L1通路带宽使用率。 |
| L0C_to_GM_bw_usage_rate(%) | L0C到GM通路带宽使用率。 |
| GM_to_UB_bw_usage_rate(%) | GM到UB通路带宽使用率。 |
| UB_to_GM_bw_usage_rate(%) | UB到GM通路带宽使用率。 |
Atlas 推理系列产品
图 2 Memory.csv文件

关键字段说明如下。
表 2 字段说明
| 字段名 | 字段解释 |
|---|---|
| aic_time(us) | 该Task被分配到每个AI Core计算单元上后,每个AI Core计算单元上的执行时间,单位us。 |
| aic_total_cycles | 该Task被分配到每个AI Core计算单元上后,每个AI Core计算单元上的执行的cycle总数。 |
| aic_ub_to_gm_bw(GB/s) | 代表ub向gm写入的数据量对应total cycle的带宽速率,单位GB/s。 |
| aic_gm_to_ub_bw(GB/s) | 代表gm向ub写入的数据量对应total cycle的带宽速率,单位GB/s。 |
| aic_l1_read_bw(GB/s) | 代表本算子中l1单元读取其他所有单元数据时,对应的total cycle的带宽速率,单位GB/s。 |
| aic_l1_write_bw(GB/s) | 代表本算子中l1单元写入其他所有单元数据时,对应的total cycle的带宽速率,单位GB/s。 |
| aic_main_mem_read_bw(GB/s) | 代表主存储器读取其他所有单元数据时,对应的total cycle的带宽速率,单位GB/s。 |
| aic_main_mem_write_bw(GB/s) | 代表主存储器写入其他所有单元数据时,对应的total cycle的带宽速率,单位GB/s。 |
| aic_mte1_instructions | 代表MTE1类型指令条数。 |
| aic_mte1_ratio | 代表MTE1类型指令的cycle数在total cycle数中的占用比。 |
| aic_mte2_instructions | 代表MTE2类型指令条数。 |
| aic_mte2_ratio | 代表MTE2类型指令的cycle数在total cycle数中的占用比。 |
| aic_mte3_instructions | 代表MTE3类型指令条数。 |
| aic_mte3_ratio | 代表MTE3类型指令的cycle数在total cycle数中的占用比。 |
Atlas 350 加速卡
图 3 Memory.csv文件

关键字段说明如下。
表 3 字段说明
| 字段名 | 字段解释 |
|---|---|
| block_id | Task运行切分数量,对应Task运行时配置的核数。 |
| sub_block_id | Task运行使用的每个block名称和序号。 |
| aic_time(us) | 该Task被分配到每个AI Cube Core计算单元上后,每个AI Cube Core计算单元上的执行时间,单位us。 |
| aic_total_cycles | 该Task被分配到每个AI Cube Core计算单元上后,每个AI Cube Core计算单元上的执行的cycle总数。 |
| aiv_time(us) | 该Task被分配到每个AI Vector Core计算单元上后,每个AI Vector Core计算单元上的执行时间,单位us。 |
| aiv_total_cycles | 该Task被分配到每个AI Vector Core计算单元上后,每个AI Vector Core计算单元上的执行的cycle总数。 |
| aiv_ub_to_gm_bw(GB/s) | 代表ub向gm写入的数据量对应total cycle的带宽速率,单位GB/s。 |
| aiv_gm_to_ub_bw(GB/s) | 代表gm向ub写入的数据量对应total cycle的带宽速率,单位GB/s。 |
| aic_l1_read_bw(GB/s) | 代表本算子中l1单元读取其他所有单元数据时,对应的total cycle的带宽速率,单位GB/s。 |
| aic_l1_write_bw(GB/s) | 代表本算子中l1单元写入其他所有单元数据时,对应的total cycle的带宽速率,单位GB/s。 |
| ai*_main_mem_read_bw(GB/s) | 代表主存储器读取其他所有单元数据时,对应的total cycle的带宽速率,单位GB/s。 |
| ai*_main_mem_write_bw(GB/s) | 代表主存储器写入其他所有单元数据时,对应的total cycle的带宽速率,单位GB/s。 |
| aic_mte1_instructions | 代表MTE1类型指令条数。 |
| aic_mte1_ratio | 代表MTE1类型指令的cycle数在total cycle数中的占用比。 |
| ai*_mte2_instructions | 代表MTE2类型指令条数。 |
| ai*_mte2_ratio | 代表MTE2类型指令的cycle数在total cycle数中的占用比。 |
| ai*_mte3_instructions | 代表MTE3类型指令条数。 |
| ai*_mte3_ratio | 代表MTE3类型指令的cycle数在total cycle数中的占用比。 |
| read_main_memory_datas(KB) | 读主存储器数据总量。 |
| write_main_memory_datas(KB) | 写主存储器数据总量。 |
| GM_to_L1_datas(KB) | GM到L1的数据搬运量。 |
| L0C_to_L1_datas(KB) | L0C到L1的数据搬运量。 |
| L0C_to_GM_datas(KB) | L0C到GM的数据搬运量。 |
| GM_to_UB_datas(KB) | GM到UB的数据搬运量。 |
| GM_to_L1_bw_usage_rate(%) | GM到L1通路带宽使用率。 |
| L0C_to_L1_bw_usage_rate(%) | L0C到L1通路带宽使用率。 |
| L0C_to_GM_bw_usage_rate(%) | L0C到GM通路带宽使用率。 |
| GM_to_UB_bw_usage_rate(%) | GM到UB通路带宽使用率。 |
MemoryL0(L0读写带宽速率)
L0A/L0B/L0C采集内存读写带宽速率数据MemoryL0.csv。详情介绍请参见下表中的字段说明。
单位GB/s表示每秒传输1GB的数据量。
Atlas A3 训练系列产品/Atlas A3 推理系列产品和Atlas A2 训练系列产品/Atlas A2 推理系列产品以及Atlas 350 加速卡
图 1 MemoryL0.csv文件

关键字段说明如下。
表 1 字段说明
| 字段名 | 字段解释 |
|---|---|
| block_id | Task运行切分数量,对应Task运行时配置的核数。 |
| sub_block_id | Task运行使用的每个block名称和序号。 |
| aic_time(us) | 该Task被分配到每个AI Cube Core计算单元上后,每个AI Cube Core计算单元上的执行时间,单位us。 |
| aic_total_cycles | 该Task被分配到每个AI Cube Core计算单元上后,每个AI Cube Core计算单元上的执行的cycle总数。 |
| aiv_time(us) | 该Task被分配到每个AI Vector Core计算单元上后,每个AI Vector Core计算单元上的执行时间,单位us。 |
| aiv_total_cycles | 该Task被分配到每个AI Vector Core计算单元上后,每个AI Vector Core计算单元上的执行的cycle总数。 |
| aic_l0a_read_bw(GB/s) | 代表本算子中l0a读取其他所有单元数据时,对应的total cycle的带宽速率,单位GB/s。 |
| aic_l0a_write_bw(GB/s) | 代表本算子中l0a写入其他所有单元数据时,对应的total cycle的带宽速率,单位GB/s。 |
| aic_l0b_read_bw(GB/s) | 代表本算子中l0b读取其他所有单元数据时,对应的total cycle的带宽速率,单位GB/s。 |
| aic_l0b_write_bw(GB/s) | 代表本算子中l0b写入其他所有单元数据时,对应的total cycle的带宽速率,单位GB/s。 |
| aic_l0c_read_bw_cube(GB/s) | 代表Cube从l0c读取的数据量对应total cycle的带宽速率,单位GB/s。 |
| aic_l0c_write_bw_cube(GB/s) | 代表Cube向l0c写入的数据量对应total cycle的带宽速率,单位GB/s。 |
Atlas 推理系列产品
图 2 MemoryL0.csv文件

关键字段说明如下。
表 2 字段说明
| 字段名 | 字段解释 |
|---|---|
| aic_time(us) | 该Task被分配到每个AI Core计算单元上后,每个AI Core计算单元上的执行时间,单位us。 |
| aic_total_cycles | 该Task被分配到每个AI Core计算单元上后,每个AI Core计算单元上的执行的cycle总数。 |
| aic_l0a_read_bw(GB/s) | 代表本算子中l0a单元读取其他所有单元数据时,对应的total cycle的带宽速率,单位GB/s。 |
| aic_l0a_write_bw(GB/s) | 代表本算子中l0a单元写入其他所有单元数据时,对应的total cycle的带宽速率,单位GB/s。 |
| aic_l0b_read_bw(GB/s) | 代表本算子中l0b单元读取其他所有单元数据时,对应的total cycle的带宽速率,单位GB/s。 |
| aic_l0b_write_bw(GB/s) | 代表本算子中l0b单元写入其他所有单元数据时,对应的total cycle的带宽速率,单位GB/s。 |
| aic_l0c_read_bw_cube(GB/s) | 代表Cube从l0c读取的数据量对应total cycle的带宽速率,单位GB/s。 |
| aic_l0c_write_bw_cube(GB/s) | 代表Cube向l0c写入的数据量对应total cycle的带宽速率,单位GB/s。 |
| aic_l0c_read_bw(GB/s) | 代表Vector从l0c读取的数据量对应total cycle的带宽速率,单位GB/s。 |
| aic_l0c_write_bw(GB/s) | 代表Vector向l0c写入的数据量对应total cycle的带宽速率,单位GB/s。 |
MemoryUB(UB读写带宽速率)
mte/vector/scalar采集ub读写带宽速率数据MemoryUB.csv。详情介绍请参见下表中的字段说明。
单位GB/s表示每秒传输1GB的数据量。
Atlas A3 训练系列产品/Atlas A3 推理系列产品及Atlas A2 训练系列产品/Atlas A2 推理系列产品
图 1 MemoryUB.csv文件

关键字段说明如下。
表 1 字段说明
| 字段名 | 字段解释 |
|---|---|
| block_id | Task运行切分数量,对应Task运行时配置的核数。 |
| sub_block_id | Task运行使用的每个block名称和序号。 |
| aic_time(us) | 该Task被分配到每个AI Cube Core计算单元上后,每个AI Cube Core计算单元上的执行时间,单位us。 |
| aic_total_cycles | 该Task被分配到每个AI Cube Core计算单元上后,每个AI Cube Core计算单元上的执行的cycle总数。 |
| aiv_time(us) | 该Task被分配到每个AI Vector Core计算单元上后,每个AI Vector Core计算单元上的执行时间,单位us。 |
| aiv_total_cycles | 该Task被分配到每个AI Vector Core计算单元上后,每个AI Vector Core计算单元上的执行的cycle总数。 |
| aiv_ub_read_bw_vector(GB/s) | 代表Vector从UB读取的数据量对应total cycle的带宽速率,单位GB/s。 |
| aiv_ub_write_bw_vector(GB/s) | 代表Vector向UB写入的数据量对应total cycle的带宽速率,单位GB/s。 |
| aiv_ub_read_bw_scalar(GB/s) | 代表Scalar从UB读取的数据量对应total cycle的带宽速率,单位GB/s。 |
| aiv_ub_write_bw_scalar(GB/s) | 代表Scalar向UB写入的数据量对应total cycle的带宽速率,单位GB/s。 |
Atlas 推理系列产品
图 2 MemoryUB.csv文件

关键字段说明如下。
表 2 字段说明
| 字段名 | 字段解释 |
|---|---|
| aic_time(us) | 该Task被分配到每个AI Core计算单元上后,每个AI Core计算单元上的执行时间,单位us。 |
| aic_total_cycles | 该Task被分配到每个AI Core计算单元上后,每个AI Core计算单元上的执行的cycle总数。 |
| aic_ub_read_bw_vector(GB/s) | 代表Vector从UB读取的数据量对应total cycle的带宽速率,单位GB/s。 |
| aic_ub_write_bw_vector(GB/s) | 代表Vector向UB写入的数据量对应total cycle的带宽速率,单位GB/s。 |
| aic_ub_read_bw_scalar(GB/s) | 代表Scalar从UB读取的数据量对应total cycle的带宽速率,单位GB/s。 |
| aic_ub_write_bw_scalar(GB/s) | 代表Scalar向UB写入的数据量对应total cycle的带宽速率,单位GB/s。 |
Atlas 350 加速卡
图 3 MemoryUB.csv文件

关键字段说明如下。
表 3 字段说明
| 字段名 | 字段解释 |
|---|---|
| block_id | Task运行切分数量,对应Task运行时配置的核数。 |
| sub_block_id | Task运行使用的每个block名称和序号。 |
| aic_time(us) | 该Task被分配到每个AI Cube Core计算单元上后,每个AI Cube Core计算单元上的执行时间,单位us。 |
| aic_total_cycles | 该Task被分配到每个AI Cube Core计算单元上后,每个AI Cube Core计算单元上的执行的cycle总数。 |
| aiv_time(us) | 该Task被分配到每个AI Vector Core计算单元上后,每个AI Vector Core计算单元上的执行时间,单位us。 |
| aiv_total_cycles | 该Task被分配到每个AI Vector Core计算单元上后,每个AI Vector Core计算单元上的执行的cycle总数。 |
| aiv_ub_read_bw_vector(GB/s) | 代表Vector从UB读取的数据量对应total cycle的带宽速率,单位GB/s。 |
| aiv_ub_write_bw_vector(GB/s) | 代表Vector向UB写入的数据量对应total cycle的带宽速率,单位GB/s。 |
| aiv_ub_write_bw_gm(GB/s) | 代表GM向UB写入的数据量对应total cycle的带宽速率,单位GB/s。 |
| aiv_ub_read_bw_gm(GB/s) | 代表GM向UB读取的数据量对应total cycle的带宽速率,单位GB/s。 |
OpBasicInfo(算子基础信息)
算子基础信息数据OpBasicInfo.csv,包含算子名称,算子类型,Block Dim和耗时等信息。详情介绍请参见下表中的字段说明。
图 1 OpBasicInfo.csv文件

关键字段说明如下。
表 1 字段说明
| 字段名 | 字段解释 |
|---|---|
| Op Name | 算子名称。 |
| Op Type | 算子类型。 |
| Task Duration(us) | Task耗时,包含调度到AI处理器的时间、AI处理器上的执行时间以及结束响应时间,单位us。 |
| Block Dim | Task运行切分数量,对应Task运行时核数,开发者设置的算子执行逻辑核数。 |
| Mix Block Dim | 部分算子在Cube Core和Vector Core上同时执行,主AI处理器的blockDim在“Block Dim”字段中描述,可理解为Cube Core的数量,而从AI处理器的blockDim在本字段中描述,则可理解为Vector Core的数量。显示为N/A表示为非Mix融合算子。此参数仅适用于Atlas A3 训练系列产品/Atlas A3 推理系列产品和Atlas A2 训练系列产品/Atlas A2 推理系列产品以及Atlas 350 加速卡。 |
| Device ID | 运行时使用AI处理器的ID。 |
| PID | 算子运行时的进程号。 |
| Current Freq | AI处理器当前运行的频率。 |
| Rated Freq | AI处理器的理论频率。 |
PipeUtilization(计算单元和搬运单元耗时占比)
采集计算单元和搬运单元耗时和占比数据PipeUtilization.csv。建议优化数据搬运逻辑,提高带宽利用率。详情介绍请参见下表中的字段说明。
Note
- 单位GB/s表示每秒传输1GB的数据量。
- 表中的字段说明里每一个ratio的total cycle表示的是cube核或者vector核上的cycle数,其中ai*分为aic和aiv,aic指的是cube,aiv指的是vector。
Atlas A3 训练系列产品/Atlas A3 推理系列产品和Atlas A2 训练系列产品/Atlas A2 推理系列产品
图 1 PipeUtilization.csv文件

关键字段说明如下。
表 1 字段说明
| 字段名 | 字段解释 |
|---|---|
| block_id | Task运行切分数量,对应Task运行时配置的核数。 |
| sub_block_id | Task运行使用的每个block名称和序号。 |
| aic_time(us) | 该Task被分配到每个AI Cube Core计算单元上后,每个AI Cube Core计算单元上的执行时间,单位us。 |
| aic_total_cycles | 该Task被分配到每个AI Cube Core计算单元上后,每个AI Cube Core计算单元上的执行的cycle总数。 |
| aiv_time(us) | 该Task被分配到每个AI Vector Core计算单元上后,每个AI Vector Core计算单元上的执行时间,单位us。 |
| aiv_total_cycles | 该Task被分配到每个AI Vector Core计算单元上后,每个AI Vector Core计算单元上的执行的cycle总数。 |
| aiv_vec_time(us) | 代表vec类型指令(向量类运算指令)耗时。 |
| aiv_vec_ratio | 代表vec类型指令(向量类运算指令)的cycle数在total cycle数中的占用比。 |
| aic_cube_time(us) | 代表Cube类型指令(fp16及s16矩阵类运算指令)耗时。 |
| aic_cube_ratio | 代表Cube类型指令(fp16及s16矩阵类运算指令)的cycle数在total cycle数中的占用比。 |
| ai*_scalar_time(us) | 代表scalar类型指令(标量类运算指令)耗时。 |
| ai*_scalar_single_time(us) | 代表scalar类型指令(标量类运算指令)的单发(一拍发射一条指令)指令时间。 |
| ai*_scalar_dual_time(us) | 代表scalar类型指令(标量类运算指令)的双发(一拍发射两条指令)指令时间。 |
| ai*_scalar_wait_time(us) | 代表scalar类型指令(标量类运算指令)的核内wait指令阻塞的时间。 |
| ai*_scalar_wait_id*_time(us) | 代表scalar类型指令(标量类运算指令)的核间wait指令ID阻塞的时间。 “id*”为占位符,实际可对应ID0到ID15的任意核编号。 核间同步指标ai*_scalar_wait_id0_time到ai*_scalar_wait_id15_time仅在有数据的时候进行展示。 |
| aic_scalar_mte1_stall_time(us) | 代表scalar类型指令(标量类运算指令)因MTE1 IQ队列已满所造成的阻塞时间。 |
| ai*_scalar_mte2_stall_time(us) | 代表scalar类型指令(标量类运算指令)因MTE2 IQ队列已满所造成的阻塞时间。 |
| ai*_scalar_mte3_stall_time(us) | 代表scalar类型指令(标量类运算指令)因MTE3 IQ队列已满所造成的阻塞时间。 |
| aic_scalar_cube_stall_time(us) | 代表scalar类型指令(标量类运算指令)因CUBE IQ队列已满所造成的阻塞时间。 |
| aic_scalar_vector_stall_time(us) | 代表scalar类型指令(标量类运算指令)因VECTOR IQ队列已满所造成的阻塞时间。 |
| ai*_scalar_wait_ib_time(us) | 代表scalar类型指令(标量类运算指令)的IB等待Icache时间。 |
| aic_scalar_stall_by_ub_time(us) | 代表scalar类型指令(标量类运算指令)被UB阻塞的时间。 |
| ai*_scalar_ratio | 代表scalar类型指令(标量类运算指令)的cycle数在total cycle数中的占用比。 |
| aic_fixpipe_time(us) | 代表fixpipe类型指令(L0C->GM/L1搬运类指令)耗时。 |
| aic_fixpipe_ratio | 代表fixpipe类型指令(L0C->GM/L1搬运类指令)的cycle数在total cycle数中的占用比。 |
| aic_mte1_time(us) | 代表MTE1类型指令(L1->L0A/L0B搬运类指令)耗时,不包括搬运等待时间。 |
| aic_mte1_ratio | 代表MTE1类型指令(L1->L0A/L0B搬运类指令)的cycle数在total cycle数中的占用比。 |
| ai*_mte2_time(us) | 代表MTE2类型指令(GM->AICORE搬运类指令)耗时。 |
| ai*_mte2_ratio | 代表MTE2类型指令(GM->AICORE搬运类指令)的cycle数在total cycle数中的占用比。 |
| ai*_mte3_time(us) | 代表MTE3类型指令(AICORE->GM搬运类指令)耗时。 |
| ai*_mte3_ratio | 代表MTE3类型指令(AICORE->GM搬运类指令)的cycle数在total cycle数中的占用比。 |
| ai*_icache_miss_rate | 代表ICache缺失率,即未命中instruction的L1 cache,数值越小越好。 |
| aic_mte3_active_bw(GB/s) | 代表MTE3类型指令(AICORE->DDR CUBE搬运类指令)数据量对应active cycle的活跃带宽。 |
| aiv_mte3_active_bw(GB/s) | 代表MTE3类型指令(AICORE->DDR AIV搬运类指令)数据量对应active cycle的活跃带宽。 |
| aic_fixpipe_active_bw(GB/s) | 代表fixpipe类型指令(L0C->OUT/L1搬运类指令)数据量对应active cycle的活跃带宽。 |
| aiv_mte2_active_bw(GB/s) | 代表MTE2类型指令(DDR->AICORE AIV搬运类指令)数据量对应active cycle的活跃带宽。 |
| aic_mte1_active_bw(GB/s) | 代表Cube单元MTE1数据量对应active cycle的活跃带宽,具体涉及L1->L0A、L1->L0B这2个部分的通路数据。Atlas A3 训练系列产品/Atlas A3 推理系列产品和Atlas A2 训练系列产品/Atlas A2 推理系列产品仅开启动态插桩(设置--aic-metrics=MemoryDetail时)会显示。 |
| aic_mte2_active_bw(GB/s) | 代表Cube单元MTE2数据量对应active cycle的活跃带宽,具体涉及GM->L1、GM->L0A、GM->L0B这3条通路的数据。Atlas A3 训练系列产品/Atlas A3 推理系列产品和Atlas A2 训练系列产品/Atlas A2 推理系列产品仅开启动态插桩(设置--aic-metrics=MemoryDetail时)会显示。 |
Atlas 推理系列产品
图 2 PipeUtilization.csv文件

关键字段说明如下。
表 2 字段说明
| 字段名 | 字段解释 |
|---|---|
| aic_time(us) | 该Task被分配到每个AI Core计算单元上后,每个AI Core计算单元上的执行时间,单位us。 |
| aic_total_cycles | 该Task被分配到每个AI Core计算单元上后,每个AI Core计算单元上的执行的cycle总数。 |
| aic_cube_time(us) | 代表Cube类型指令(fp16及s16矩阵类运算指令)耗时。 |
| aic_cube_ratio | 代表Cube类型指令(fp16及s16矩阵类运算指令)的cycle数在total cycle数中的占用比。 |
| aic_scalar_time(us) | 代表scalar类型指令(标量类运算指令)耗时。 |
| aic_scalar_ratio | 代表scalar类型指令(标量类运算指令)的cycle数在total cycle数中的占用比。 |
| aic_mte1_time(us) | 代表MTE1类型指令(L1->L0A/L0B搬运类指令)耗时,不包括搬运等待时间。 |
| aic_mte1_ratio | 代表MTE1类型指令(L1->L0A/L0B搬运类指令)的cycle数在total cycle数中的占用比。 |
| aic_mte2_time(us) | 代表MTE2类型指令(GM->AICORE搬运类指令)耗时。 |
| aic_mte2_ratio | 代表MTE2类型指令(GM->AICORE搬运类指令)的cycle数在total cycle数中的占用比。 |
| aic_mte3_time(us) | 代表MTE3类型指令(AICORE->GM搬运类指令)耗时。 |
| aic_mte3_ratio | 代表MTE3类型指令(AICORE->GM搬运类指令)的cycle数在total cycle数中的占用比。 |
| aic_icache_miss_rate | 代表ICache缺失率,即未命中instruction的L1 cache,数值越小越好。 |
| aic_vec_time(us) | 代表Vec类型指令(向量类运算指令)耗时。 |
| aic_vec_ratio | 代表Vec类型指令(向量类运算指令)的cycle数在total cycle数中的占用比。 |
Atlas 350 加速卡
图 3 PipeUtilization.csv文件

关键字段说明如下。
表 3 字段说明
| 字段名 | 字段解释 |
|---|---|
| block_id | Task运行切分数量,对应Task运行时配置的核数。 |
| sub_block_id | Task运行使用的每个block名称和序号。 |
| aic_time(us) | 该Task被分配到每个AI Cube Core计算单元上后,每个AI Cube Core计算单元上的执行时间,单位us。 |
| aic_total_cycles | 该Task被分配到每个AI Cube Core计算单元上后,每个AI Cube Core计算单元上的执行的cycle总数。 |
| aiv_time(us) | 该Task被分配到每个AI Vector Core计算单元上后,每个AI Vector Core计算单元上的执行时间,单位us。 |
| aiv_total_cycles | 该Task被分配到每个AI Vector Core计算单元上后,每个AI Vector Core计算单元上的执行的cycle总数。 |
| aiv_vec_time(us) | 代表vec类型指令(向量类运算指令)耗时。 |
| aiv_vec_ratio | 代表vec类型指令(向量类运算指令)的cycle数在total cycle数中的占用比。 |
| aic_cube_time(us) | 代表Cube类型指令(fp16及s16矩阵类运算指令)耗时。 |
| aic_cube_ratio | 代表Cube类型指令(fp16及s16矩阵类运算指令)的cycle数在total cycle数中的占用比。 |
| ai*_scalar_time(us) | 代表scalar类型指令(标量类运算指令)耗时。 |
| ai*_scalar_ratio | 代表scalar类型指令(标量类运算指令)的cycle数在total cycle数中的占用比。 |
| aic_fixpipe_time(us) | 代表fixpipe类型指令(L0C->GM/L1搬运类指令)耗时。 |
| aic_fixpipe_ratio | 代表fixpipe类型指令(L0C->GM/L1搬运类指令)的cycle数在total cycle数中的占用比。 |
| aic_mte1_time(us) | 代表MTE1类型指令(L1->L0A/L0B搬运类指令)耗时,不包括搬运等待时间。 |
| aic_mte1_ratio | 代表MTE1类型指令(L1->L0A/L0B搬运类指令)的cycle数在total cycle数中的占用比。 |
| ai*_mte2_time(us) | 代表MTE2类型指令(GM->AICORE搬运类指令)耗时。 |
| ai*_mte2_ratio | 代表MTE2类型指令(GM->AICORE搬运类指令)的cycle数在total cycle数中的占用比。 |
| ai*_mte3_time(us) | 代表MTE3类型指令(AICORE->GM搬运类指令)耗时。 |
| ai*_mte3_ratio | 代表MTE3类型指令(AICORE->GM搬运类指令)的cycle数在total cycle数中的占用比。 |
| ai*_icache_miss_rate | 代表ICache缺失率,即未命中instruction的L1 cache,数值越小越好。 |
| aic_mte3_active_bw(GB/s) | 代表MTE3类型指令(AICORE->DDR CUBE搬运类指令)的活跃带宽。 |
| aiv_mte3_active_bw(GB/s) | 代表MTE3类型指令(AICORE->DDR AIV搬运类指令)的活跃带宽。 |
| aic_fixpipe_active_bw(GB/s) | 代表fixpipe类型指令(L0C->OUT/L1搬运类指令)的活跃带宽。 |
| aiv_mte2_active_bw(GB/s) | 代表MTE2类型指令(DDR->AICORE AIV搬运类指令)的活跃带宽。 |
| aic_mte1_active_bw(GB/s) | 代表Cube单元MTE1的活跃带宽,具体涉及L1->L0A、L1->L0B这2个部分的通路数据。Atlas A3 训练系列产品/Atlas A3 推理系列产品和Atlas A2 训练系列产品/Atlas A2 推理系列产品仅开启动态插桩(设置--aic-metrics=MemoryDetail时)会显示。 |
| aic_mte2_active_bw(GB/s) | 代表Cube单元MTE2的活跃带宽,具体涉及GM->L1、GM->L0A、GM->L0B这3条通路的数据。Atlas A3 训练系列产品/Atlas A3 推理系列产品和Atlas A2 训练系列产品/Atlas A2 推理系列产品仅开启动态插桩(设置--aic-metrics=MemoryDetail时)会显示。 |
ResourceConflictRatio(资源冲突占比)
UB上的bank group、bank conflict和资源冲突在所有指令中的占比数据ResourceConflictRatio.csv,建议减少对于同一个bank的读写冲突或bank group的读读冲突。
bank group是指UB中的一组bank,每个bank group包含多个bank。bank conflict是指在UB中同时访问相同bank的多个线程之间的竞争。
详情介绍请参见下表中的字段说明。
Atlas A3 训练系列产品/Atlas A3 推理系列产品及Atlas A2 训练系列产品/Atlas A2 推理系列产品
图 1 ResourceConflictRatio.csv文件

关键字段说明如下。
表 1 字段说明
| 字段名 | 字段解释 |
|---|---|
| block_id | Task运行切分数量,对应Task运行时配置的核数。 |
| sub_block_id | Task运行使用的每个block名称和序号。 |
| aic_time(us) | 该Task被分配到每个AI Cube Core计算单元上后,每个AI Cube Core计算单元上的执行时间,单位us。 |
| aic_total_cycles | 该Task被分配到每个AI Cube Core计算单元上后,每个AI Cube Core计算单元上的执行的cycle总数。 |
| aiv_time(us) | 该Task被分配到每个AI Vector Core计算单元上后,每个AI Vector Core计算单元上的执行时间,单位us。 |
| aiv_total_cycles | 该Task被分配到每个AI Vector Core计算单元上后,每个AI Vector Core计算单元上的执行的cycle总数。 |
| aic_cube_wait_ratio | 代表Cube单元被阻塞的cycle数在所有指令执行cycle数中占比。 |
| aiv_vec_total_cflt_ratio | 代表所有Vector执行的指令被阻塞的cycle数在所有指令执行cycle数中占比。 |
| aiv_vec_bankgroup_cflt_ratio | 代表Vector执行的指令被bankgroup冲突阻塞的cycle数在所有指令执行cycle数中占比。由于Vector指令的block stride的值设置不合理,造成bankgroup冲突。 |
| aiv_vec_bank_cflt_ratio | 代表Vector执行的指令被bank冲突阻塞的cycle数在所有指令执行cycle数中占比。由于Vector指令操作数的读写指针地址不合理,造成bank冲突。 |
| aiv_vec_resc_cflt_ratio | 代表Vector执行的指令被执行单元资源冲突阻塞的cycle数在所有指令执行cycle数中占比。当算子中涉及多个计算单元,应该尽量保证多个单元并发调度。当某个计算单元正在运行,但算子逻辑仍然往该单元下发指令,就会造成整体的算力没有得到充分应用。 |
| aiv_vec_mte_cflt_ratio | 代表Vector执行的指令被MTE冲突阻塞的cycle数在所有指令执行cycle数中占比。 |
| aiv_vec_wait_ratio | 代表Vector单元被阻塞的cycle数在所有指令执行cycle数中占比。 |
| aic_mte1_wait_ratio | 代表MTE1被阻塞的cycle数在所有指令执行cycle数中占比。 |
| ai*_mte2_wait_ratio | 代表MTE2被阻塞的cycle数在所有指令执行cycle数中占比。 |
| ai*_mte3_wait_ratio | 代表MTE3被阻塞的cycle数在所有指令执行cycle数中占比。 |
Atlas 推理系列产品
图 2 ResourceConflictRatio.csv文件

关键字段说明如下。
表 2 字段说明
| 字段名 | 字段解释 |
|---|---|
| aic_time(us) | 该Task被分配到每个AI Core计算单元上后,每个AI Core计算单元上的执行时间,单位us。 |
| aic_total_cycles | 该Task被分配到每个AI Core计算单元上后,每个AI Core计算单元上的执行的cycle总数。 |
| aic_cube_wait_ratio | 代表Cube单元被阻塞的cycle数在所有指令执行cycle数中占比。 |
| aic_vec_total_cflt_ratio | 代表所有Vector执行的指令被阻塞的cycle数在所有指令执行cycle数中占比。 |
| aic_vec_bankgroup_cflt_ratio | 代表Vector执行的指令被bankgroup冲突阻塞的cycle数在所有指令执行cycle数中占比。由于Vector指令的block stride的值设置不合理,造成bankgroup冲突。 |
| aic_vec_bank_cflt_ratio | 代表Vector执行的指令被bank冲突阻塞的cycle数在所有指令执行cycle数中占比。由于Vector指令操作数的读写指针地址不合理,造成bank冲突。 |
| aic_vec_resc_cflt_ratio | 代表Vector执行的指令被执行单元资源冲突阻塞的cycle数在所有指令执行cycle数中占比。当算子中涉及多个计算单元,应该尽量保证多个单元并发调度。当某个计算单元正在运行,但算子逻辑仍然往该单元下发指令,就会造成整体的算力没有得到充分应用。 |
| aic_vec_mte_cflt_ratio | 代表Vector执行的指令被MTE冲突阻塞的cycle数在所有指令执行cycle数中占比。 |
| aic_vec_wait_ratio | 代表Vector单元被阻塞的cycle数在所有指令执行cycle数中占比。 |
| aic_mte1_wait_ratio | 代表MTE1被阻塞的cycle数在所有指令执行cycle数中占比。 |
| aic_mte2_wait_ratio | 代表MTE2被阻塞的cycle数在所有指令执行cycle数中占比。 |
| aic_mte3_wait_ratio | 代表MTE3被阻塞的cycle数在所有指令执行cycle数中占比。 |
Note
上表字段中的aic指的是AI Core。
Atlas 350 加速卡
图 3 ResourceConflictRatio.csv文件

关键字段说明如下。
表 3 字段说明
| 字段名 | 字段解释 |
|---|---|
| block_id | Task运行切分数量,对应Task运行时配置的核数。 |
| sub_block_id | Task运行使用的每个block名称和序号。 |
| aic_time(us) | 该Task被分配到每个AI Cube Core计算单元上后,每个AI Cube Core计算单元上的执行时间,单位us。 |
| aic_total_cycles | 该Task被分配到每个AI Cube Core计算单元上后,每个AI Cube Core计算单元上的执行的cycle总数。 |
| aic_cube_wait_ratio | 代表Cube单元被阻塞的cycle数在所有指令执行cycle数中占比。 |
| aic_mte1_wait_ratio | 代表MTE1被阻塞的cycle数在所有指令执行cycle数中占比。 |
| aic_mte2_wait_ratio | 代表MTE2被阻塞的cycle数在所有指令执行cycle数中占比。 |
| aic_mte3_wait_ratio | 代表MTE3被阻塞的cycle数在所有指令执行cycle数中占比。 |
| aiv_time(us) | 该Task被分配到每个AI Vector Core计算单元上后,每个AI Vector Core计算单元上的执行时间,单位us。 |
| aiv_total_cycles | 该Task被分配到每个AI Vector Core计算单元上后,每个AI Vector Core计算单元上的执行的cycle总数。 |
| aiv_vec_stu_cflt_ratio | 代表Vector执行的指令set值时阻塞的cycle数在所有指令执行cycle数中占比。 |
| aiv_vec_ldu_cflt_ratio | 代表Vector执行的指令load值时阻塞的cycle数在所有指令执行cycle数中占比。 |
| aiv_vec_sfu_cflt_ratio | 代表Vector执行的指令读、写冲突阻塞的cycle数在所有指令执行cycle数中占比。 |
| aiv_vec_wait_ratio | 代表Vector单元被阻塞的cycle数在所有指令执行cycle数中占比。 |
| aiv_mte2_wait_ratio | 代表MTE2被阻塞的cycle数在所有指令执行cycle数中占比。 |
| aiv_mte3_wait_ratio | 代表MTE3被阻塞的cycle数在所有指令执行cycle数中占比。 |