融合节点处理
AscBackend和AscBackend之间才可以进行融合,融合后,可以循环轴合并生成的仍然是AscBackend类型,无法循环轴合并的,则生成FusedAscBackend类型。
节点融合需要融合原图中的AscBackend,并同时对AscBackend下的AscGraph进行子图融合,子图融合过程中需要消除AscGraph上的load和store节点。融合节点处理原则如下,示意图如图1所示。
- 根据循环轴是否相同,判断两个AscBackend是否能循环轴合并,如果能循环轴合并,合并AscBackend下的两个AscGraph。(具体合并流程可参考图2)。
- 如果不能循环轴合并,则将AscBackend放入一个新FusedAscBackend的子图中,由后端决定生成多个kernel还是一个kernel包含多个循环。
- 不能循环合并的FusedAscBackend与原图中的AscBackend直接融合成一个新FusedAscBackend。
- FusedAscBackend的子图中可能还存在可以循环合并的AscBackend,框架应尽可能地进行循环轴合并。
父主题: 融合策略

