带宽优化
首先可以按profiling中的数据计算出MTE实际带宽:搬运数据量 / 对应搬运耗时,其中“搬运数据量”需根据实际情况确认(不包含重复搬运涉及的数据量)。
- 观察实际带宽和理论带宽的差距,首先,考虑连续搬运数据量的大小对带宽的影响,可以采取实验的方式来得到一个最佳的基本数据量,从而以此数据量为基准来更好的发挥带宽性能;
以搬入不同的数据宽度为例,如图1 不同搬运数据量的带宽对比图所示。
当数据单次搬移(无复用)时,可以参照上述场景合理进行数据分配。
- 同时在某些算子过程中会存在数据重复搬移的场景,此时需要考虑到缓存的利用,以Matmul算子中的MTE2带宽为例,发现随着矩阵大小增加MTE2带宽逐渐降低,如表1所示。
表1 MTE2带宽变化表 N
MTE2 BW(TB/s)
缓存命中率
4096
3.87
93.77%
8192
3.73
93.71%
10240
3.52
89.27%
12288
2.13
57.57%
16384
1.62
32.31%
M = 2560,K = 8192
可以观察到随着矩阵增大,缓存命中率逐渐降低,此时我们可以修改对应的任务分配算法以提升数据在缓存中的利用率来提高缓存命中;例如在当前用例中,重排任务分配得到带宽前后对比图,如图2 带宽前后对比图所示。
通常在优化带宽后,会观察当前实际带宽相较于理论带宽的利用率,若当前带宽利用率>90%则为较优。
父主题: 单算子性能分析及优化