简介
算子融合是整网性能提升的一种关键手段,包括图融合和UB融合。
系统内置了一些图融合和UB融合规则,均为默认开启。当前文档仅对部分融合规则进行介绍。
图融合
图融合是FE根据融合规则进行改图的过程。图融合用融合后算子替换图中融合前算子,提升计算效率。图融合的场景如下:
- 在某一些算子的数学计算量可以进行优化的情况下,可以进行图融合,融合后可以节省计算时间。例如:conv+biasAdd,可以融合成一个算子,直接在l0c中完成累加,从而省去add的计算过程。
- 在融合后的计算过程可以通过硬件指令加速的情况下,可以进行图融合,融合后能够加速。例如:conv+biasAdd的累加过程,就是通过l0c中的累加功能进行加速的,可以通过图融合完成。
UB融合
UB即昇腾AI处理器上的Unified Buffer,UB融合指A算子的计算结果在Unified Buffer上,需要搬移到Global Memory。B算子再执行时,需要将A算子的输出由Global Memory再搬移到Unified Buffer,进行B的计算逻辑,计算完之后,又从Unified Buffer搬移回Global Memory。
从这个过程会发现A的结果从Unified Buffer->Global Memory->Unified Buffer->Global Memory。这个经过Global Memory进行数据搬移的过程是浪费的,因此将A和B算子合并成一个算子,省去了数据搬移的过程叫UB融合。UB融合可以减少整网中数据搬移的时间(Global Memory>Unified Buffer,Unified Buffer->Global Memory),提高运算效率,有效降低带宽。