简介
融合策略需要综合考虑后端能力、性能收益、内存峰值影响对融合行为做出决策和融合处理,得到一个相对较优的融合结果。融合策略当前实现的功能如下:
- 支持统一的融合规则判断。
- 支持动静态shape(依赖符号化)。
- 支持融合规模控制。
- 支持融合优先级处理。
融合策略模块由CanFuse框架和Backend两部分组成:
- CanFuse框架:支持融合判断(成环检测,内存峰值等),融合策略求解功能。
- Backend:支持融合规则,融合处理(循环合并,AscGraph融合、AscBackend融合)功能。
两部分交互主流程如下:
图1 CanFuse框架与Backend交互流程图
由Lowering模块做的融合为一次融合,由CanFuse框架做的融合为二次融合,二次融合简要流程如下:
- 首先进行一轮融合,默认做10轮。
- 获取可能融合的所有节点对。
- 从2中得到的可融合节点对中获取融合优先级。
- 根据优先级,融合策略的分值,进行排序。
- 调用CanFuse框架进行融合规则判断:
- 对两个节点进行融合。
父主题: 融合策略