ai_core_utilization(AI Core指令占比数据)

AI Core指令占比数据timeline信息在msprof*.json文件的AI Core Utilization层级展示,summary信息在ai_core_utilization_*.csv文件汇总。

支持的型号

Atlas 200/300/500 推理产品

Atlas 推理系列产品(Ascend 310P处理器)

Atlas 训练系列产品

msprof*.json文件的AI Core指令占比数据说明

msprof*.json文件内容格式示例如下:

关键字段说明如下。

表1 字段说明

字段名

字段含义

Average

均值。

Core <id>

Core ID。

utilization(%)

当前采样周期内,AI Core在执行Task的total cycle(从AI Core开始执行算子的第一条指令开始计数,到最后一条指令执行完成)占比。

ai_core_utilization_*.csv文件说明

ai_core_utilization_*.csv文件内容格式示例如下。

图1 ai_core_utilization(仅为示例)

根据--aic-metrics参数取值不同,文件呈现结果不同。完整字段如下。

表2 字段说明(PipeUtilization)

字段名

字段含义

vec_ratio

vec类型指令(向量类运算指令)的cycle数在total cycle数中的占用比。

mac_ratio

cube类型指令(矩阵类运算指令)的cycle数在total cycle数中的占用比。

scalar_ratio

scalar类型指令(标量类运算指令)的cycle数在total cycle数中的占用比。

mte1_ratio

mte1类型指令(L1->L0A/L0B搬运类指令)的cycle数在total cycle数中的占用比。

mte2_ratio

mte2类型指令(DDR->AICORE搬运类指令)的cycle数在total cycle数中的占用比。

mte3_ratio

mte3类型指令(AICORE->DDR搬运类指令)的cycle数在total cycle数中的占用比。

icache_miss_rate

icache是为instruction预留的L2 Cache,icache_miss_rate数值高代表AI Core读取指令的效率低。

memory_bound

用于识别AICore执行算子计算过程是否存在Memory瓶颈,由mte2_ratio/max(mac_ratio, vec_ratio)计算得出。计算结果小于1,表示没有Memory瓶颈;计算结果大于1 则表示AI Core在执行Task过程中大部分时间都在做内存搬运而不是计算,且数值越大Memory瓶颈越严重。

表3 字段说明(ArithmeticUtilization)

字段名

字段含义

mac_fp16_ratio

cycle数在total cycle数中的占用比。

mac_int8_ratio

cube int8类型指令的cycle数在total cycle数中的占用比。

vec_fp32_ratio

vec fp32类型指令的cycle数在total cycle数中的占用比。

vec_fp16_ratio

vec fp16类型指令的cycle数在total cycle数中的占用比。

vec_int32_ratio

vec int32类型指令的cycle数在total cycle数中的占用比。

vec_misc_ratio

vec misc类型指令的cycle数在total cycle数中的占用比。

cube_fops

cube类型的浮点运算数,即计算量,可用于衡量算法/模型的复杂度,其中fops表示floating point operations,缩写为FLOPs。

vector_fops

vector类型浮点运算数,即计算量,可用于衡量算法/模型的复杂度,其中fops表示floating point operations,缩写为FLOPs。

表4 字段说明(Memory)

字段名

字段含义

ub_read_bw(GB/s)

ub读带宽速率,单位GB/s。

ub_write_bw(GB/s)

ub写带宽速率,单位GB/s。

l1_read_bw(GB/s)

l1读带宽速率,单位GB/s。

l1_write_bw(GB/s)

l1写带宽速率,单位GB/s。

l2_read_bw

l2读带宽速率,单位GB/s。仅Atlas 200/300/500 推理产品支持。

l2_write_bw

l2写带宽速率,单位GB/s。仅Atlas 200/300/500 推理产品支持。

main_mem_read_bw(GB/s)

l2读带宽速率,单位GB/s。

main_mem_write_bw(GB/s)

l2写带宽速率,单位GB/s。

表5 字段说明(MemoryL0)

字段名

字段含义

l0a_read_bw(GB/s)

l0a读带宽速率,单位GB/s。

l0a_write_bw(GB/s)

l0a写带宽速率,单位GB/s。

l0b_read_bw(GB/s)

l0b读带宽速率,单位GB/s。

l0b_write_bw(GB/s)

l0b写带宽速率,单位GB/s。

l0c_read_bw(GB/s)

vector从l0c读带宽速率,单位GB/s。

l0c_write_bw(GB/s)

vector向l0c写带宽速率,单位GB/s。

l0c_read_bw_cube(GB/s)

cube从l0c读带宽速率,单位GB/s。

l0c_write_bw_cube(GB/s)

cube向l0c写带宽速率,单位GB/s。

表6 字段说明(MemoryUB)

字段名

字段含义

ub_read_bw_mte(GB/s)

mte从ub读带宽速率,单位GB/s。仅Atlas 200/300/500 推理产品支持。

ub_write_bw_mte(GB/s)

mte向ub写带宽速率,单位GB/s。仅Atlas 200/300/500 推理产品支持。

ub_read_bw_vector(GB/s)

vector从ub读带宽速率,单位GB/s。

ub_write_bw_vector(GB/s)

vector向ub写带宽速率,单位GB/s。

ub_read_bw_scalar(GB/s)

scalar从ub读带宽速率,单位GB/s。

ub_write_bw_scalar(GB/s)

scalar向ub写带宽速率,单位GB/s。

表7 字段说明(ResourceConflictRatio)

字段名

字段含义

vec_bankgroup_cflt_ratio

vec_bankgroup_stall_cycles类型指令执行cycle数在total cycle数中的占用比。由于vector指令的block stride的值设置不合理,造成bankgroup冲突。

vec_bank_cflt_ratio

vec_bank_stall_cycles类型指令执行cycle数在total cycle数中的占用比。由于vector指令操作数的读写指针地址不合理,造成bank冲突。

vec_resc_cflt_ratio

vec_resc_cflt_ratio类型指令执行cycle数在total cycle数中的占用比。当算子中涉及多个计算单元,应该尽量保证多个单元并发调度。当某个计算单元正在执行计算,但算子逻辑仍然往该单元下发指令,就会造成整体的算力没有得到充分应用。