昇腾社区首页
中文
注册
开发者
下载

简介

融合策略需要综合考虑后端能力、性能收益、内存峰值影响对融合行为做出决策和融合处理,得到一个相对较优的融合结果。融合策略当前实现的功能如下:

  • 支持统一的融合规则判断。
  • 支持动静态shape(依赖符号化)。
  • 支持融合规模控制。
  • 支持融合优先级处理。

融合策略模块由CanFuse框架和Backend两部分组成:

  • CanFuse框架:支持融合判断(成环检测,内存峰值等),融合策略求解功能。
  • Backend:支持融合规则,融合处理(循环合并,AscGraph融合、AscBackend融合)功能。

两部分交互主流程如下:

图1 CanFuse框架与Backend交互流程图

Lowering模块做的融合为一次融合,由CanFuse框架做的融合为二次融合,二次融合简要流程如下:

  1. 首先进行一轮融合,默认做10轮。
  2. 获取可能融合的所有节点对。
  3. 2中得到的可融合节点对中获取融合优先级。
  4. 根据优先级,融合策略的分值,进行排序。
  5. 调用CanFuse框架进行融合规则判断:
    1. 确定是否能进行垂直融合。

      垂直融合:两个融合节点之间有输入输出关系,一个节点的输出为另一个节点的输入。

    2. 进行内存峰值影响分析。
    3. 确定是否能进行水平融合。

      水平融合:两个节点间没有输入输出关系,但是有来自同一个根节点的输入。

  6. 对两个节点进行融合。