流水并行优化
考虑数据量足够大时,在核内使用乒乓的方式来进行流水线之间的并行优化。
指令在核内以SCALAR单元进行下发,可能会有SCALAR运算或其他指令会阻塞后续指令下发,根据流水图观察并行程度,以Matmul算子为例(MindStudio),如图1 Matmul算子流水图1所示。
结合代码中对MTE2搬入开启乒乓流水,可以观察出图中2个MTE2之间本不应该有气泡产生,此时可以采取PreLoad的方法提前载入下一次的数据搬移以达到以下效果,如图2 Matmul算子流水图2所示。
在出现BOUND的情况下,我们应该让BOUND的流水线尽可能的一直在工作,不被其他流水线所阻塞(占比>80%)。
父主题: 单算子性能分析及优化