Matmul算子性能调优案例

案例介绍

本案例对Matmul算子进行性能分析和优化。Matmul算子实现的功能是矩阵乘法,其中主要包含的流水为数据搬入和搬出流水,Cube计算流水。

以矩阵维度M = 4096,N = 5120,K = 4096,输入数据类型half,输出数据类型float,输出格式是ND为例,性能验证平台为Atlas A2 训练系列产品/Atlas 800I A2 推理产品/A200I A2 Box 异构组件,介绍针对Matmul算子的优化手段,包括优化分核逻辑、优化基本块、使能大包搬运。

获取性能数据

使用msProf工具获取算子的Profiling数据,重点分析MTE2,Cube,Scalar pipeline的流水情况。

分析主要瓶颈点

图1 优化前Profiling数据

由以上Profiling数据,可以看出MTE2耗时占比较大,当前性能瓶颈点在于MTE2流水。

设计优化方案

验证优化方案性能收益

总结

优化点一和优化点二的适用场景,需要shape足够大,数据量足够多,才能分满核和使能最优的基本块。大shape场景下,MTE2 Bound算子可参考此案例的优化手段。