核内的多级流水通常反应了一个单算子的性能,首先我们需要通过各个流水线的工作情况来观察当前算子的状态,对于算子性能分析和优化,通常需要观察以下流水线:
- SCALAR:标量流水线,同时负责指令的下发。
- MTE1:Aic内部数据搬移的流水线。
- MTE2:向Aic/Aiv内搬移数据的流水线。
- MTE3:Aiv内部或搬出的数据流水线。
- AIC_MAC:Aic计算流水线。
- AIV_VEC:Aiv计算流水线。
根据不同的流水线时间占比,可以分析出当前哪个流水线是性能瓶颈(占比依次按由大到小分析):
图1 流水线流程图