简介
Lowering模块负责完成GE图上基于循环轴合并的算子融合。该模块输入是符号化推导后的GE图,输出则是包含融合算子的GE图。融合算子使用AscBackend类型的算子表达,AscBackend算子持有一个AscGraph类型的属性,用于表达其计算逻辑。在Lowering阶段之后,CanFuse/Schedule/Codegen等模块将进一步完成AscBackend节点间的二次融合、代码生成与编译工作。
Lowering模块包含两个层次,算子级Lowering和图级Lowering(Graph Lowering)。
- 算子级Lowering,使用低层级的IR进行算子计算逻辑的Scalar表达,Scalar表达指描述每个输出的值是如何计算得到的。可以进行Scalar表达的算子分为三类:
- 图级Lowering,会依次调用图上算子的Lowering实现,并基于Scalar表达完成算子融合。图级Lowering会完成以下场景的融合:
- Pointwise + Pointwise
- Pointwise + View
- Pointwise -> Reduction
父主题: Lowering