开发者
资源
[object Object]

【优先级】高 __

【描述】算子实现中对矩阵乘的结果进行累加时(比如矩阵A1 * B1 + A2 * B2...结果的累加),可将前一次矩阵乘的结果暂存在CO1(L0C)上,调用Mmad接口实现矩阵乘结果累加。相比于每次矩阵乘的结果从CO1搬运到GM上,再搬运到UB上进行累加计算,可减少数据搬运的次数,提升内存使用效率。

图 1 反例数据流图[object Object][object Object]

图 2 正例数据流图[object Object][object Object]

【反例】

优化前,算子进行2次矩阵乘结果累加的过程如下:

  • 将前一次矩阵乘的计算结果从CO1搬运到workspace上,再从workspace搬运到UB上;
  • 下一次矩阵乘计算重复完成上述步骤将结果搬运到UB上;
  • 在UB上将2次矩阵乘的结果相加。

当需要累加n次矩阵乘时,分别增加了n次CO1->workspace、workspace->UB搬运以及n次Add运算。

[object Object]

【正例】

通过优化,算子对矩阵乘结果累加时,可将前一次矩阵乘的结果暂存在L0C上,通过Mmad接口参数cmatrixInitVal和cmatrixSource配置C矩阵的初始值,只调用2次Mmad接口实现2次矩阵乘结果累加。

[object Object]