AI Core/AI Vector Core性能指标采集项说明(Atlas A2训练系列产品)

下发Profiling性能采集,采集类型不同时,Metrics展示的结果数据呈现有所不同。本处以task-based展示结果为例,说明数据含义。
采集AI Vector Core的MemoryL0性能指标时,采集到的数据都为0。
AI Core Metrics采集的事件详细描述如下:
- ArithmeticUtilization
- ai*_mac_fp16_ratio:代表cube fp16类型指令的cycle数在total cycle数中的占用比。
- ai*_mac_int8_ratio:代表cube int8类型指令的cycle数在total cycle数中的占用比。
- ai*_vec_fp32_ratio:代表vec fp32类型指令的cycle数在total cycle数中的占用比。
- ai*_vec_fp16_ratio:代表vec fp16类型指令的cycle数在total cycle数中的占用比。
- ai*_vec_int32_ratio:代表vec int32类型指令的cycle数在total cycle数中的占用比。
- ai*_vec_misc_ratio:代表vec misc类型指令的cycle数在total cycle数中的占用比。
- ai*_cube_fops:代表cube类型的浮点运算数,即计算量,可用于衡量算法/模型的复杂度,其中fops表示floating point operations,缩写为FLOPs。
- ai*_vector_fops:代表vector类型浮点运算数,即计算量,可用于衡量算法/模型的复杂度,其中fops表示floating point operations,缩写为FLOPs。
- PipeUtilization
- ai*_vec_time:代表vec类型指令(向量类运算指令)耗时。
- ai*_vec_ratio:代表vec类型指令(向量类运算指令)的cycle数在total cycle数中的占用比。
- ai*_mac_time:代表cube类型指令(fp16及s16矩阵类运算指令)耗时。
- ai*_mac_ratio:代表cube类型指令(fp16及s16矩阵类运算指令)的cycle数在total cycle数中的占用比。
- ai*_scalar_time:代表scalar类型指令(标量类运算指令)耗时。
- ai*_scalar_ratio:代表scalar类型指令(标量类运算指令)的cycle数在total cycle数中的占用比。
- ai*_fixpipe_time:代表fixpipe类型指令(L0C->OUT/L1搬运类指令)耗时。
- ai*_fixpipe_ratio:代表fixpipe类型指令(L0C->OUT/L1搬运类指令)的cycle数在total cycle数中的占用比。
- ai*_mte1_time:代表mte1类型指令(L1->L0A/L0B搬运类指令)耗时,不包括搬运等待时间。
- ai*_mte1_ratio:代表mte1类型指令(L1->L0A/L0B搬运类指令)的cycle数在total cycle数中的占用比。
- ai*_mte2_time:代表mte2类型指令(片上内存->AICORE搬运类指令)耗时。
- ai*_mte2_ratio:代表mte2类型指令(片上内存->AICORE搬运类指令)的cycle数在total cycle数中的占用比。
- ai*_mte3_time:代表mte3类型指令(AICORE->片上内存搬运类指令)耗时。
- ai*_mte3_ratio:代表mte3类型指令(AICORE->片上内存搬运类指令)的cycle数在total cycle数中的占用比。
- ai*_icache_miss_rate:代表icache缺失率,即未命中instruction的L1 cache,数值越小越好。
- cube_utilization:cube算子利用率,查看cube算子在单位时间内的运算次数是否达到理论上限,越接近于100%则表示越接近理论上限。计算公式:cube_utilization=total_cycles / (freq * core_num * task_duration)。
- Memory
- ai*_ub_read_bw:代表ub读带宽速率,单位GB/s。
- ai*_ub_write_bw:代表ub写带宽速率,单位GB/s。
- ai*_l1_read_bw:代表l1读带宽速率,单位GB/s。
- ai*_l1_write_bw:代表l1写带宽速率,单位GB/s。
- ai*_main_mem_read_bw:代表主存储器读带宽速率,单位GB/s。
- ai*_main_mem_write_bw:代表主存储器写带宽速率,单位GB/s。
- MemoryL0
- ai*_l0a_read_bw:代表l0a读带宽速率,单位GB/s。
- ai*_l0a_write_bw:代表l0a写带宽速率,单位GB/s。
- ai*_l0b_read_bw:代表l0b读带宽速率,单位GB/s。
- ai*_l0b_write_bw:代表l0b写带宽速率,单位GB/s。
- ai*_l0c_read_bw:代表vector从l0c读带宽速率,单位GB/s。
- ai*_l0c_write_bw:代表vector向l0c写带宽速率,单位GB/s。
- ai*_l0c_read_bw_cube:代表cube从l0c读带宽速率,单位GB/s。
- ai*_l0c_write_bw_cube:代表cube向l0c写带宽速率,单位GB/s。
- MemoryUB
- ai*_ub_read_bw_vector:代表vector从ub读带宽速率,单位GB/s。
- ai*_ub_write_bw_vector:代表vector向ub写带宽速率,单位GB/s。
- ai*_ub_read_bw_scalar:代表scalar从ub读带宽速率,单位GB/s。
- ai*_ub_write_bw_scalar:代表scalar向ub写带宽速率,单位GB/s。
- ResourceConflictRatio
- ai*_vec_bankgroup_cflt_ratio:代表vec_bankgroup_stall_cycles类型指令执行cycle数在所有指令执行cycle数中占比。由于vector指令的block stride的值设置不合理,造成bankgroup冲突。
- ai*_vec_bank_cflt_ratio:代表vec_bank_stall_cycles类型指令执行cycle数在所有指令执行cycle数中占比。由于vector指令操作数的读写指针地址不合理,造成bank冲突。
- ai*_vec_resc_cflt_ratio:代表vec_resc_cflt_ratio类型指令执行cycle数在所有指令执行cycle数中占比。当算子中涉及多个计算单元,应该尽量保证多个单元并发调度。当某个计算单元正在忙,但算子逻辑仍然往该单元下发指令,就会造成整体的算力没有得到充分应用。
- L2Cache
- 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缺失后重新分配的次数。
父主题: 附录