QuantBatchMatmulV4(qbmmv4)+ Transpose 的图融合规则在旧版 canndev 框架中已有实现。现需迁移到新版 GE 融合框架(FusionBasePass + REG_FUSION_PASS)。
FusionBasePass
REG_FUSION_PASS
融合规则:绕过 QuantBatchMatmulV4 的 x2 和 x2_scale 输入前的 Transpose/Reshape 节点,通过翻转 transpose_x2 属性实现融合。支持三种拓扑:
transpose_x2
算子图融合框架迁移
fusion_result.json
GraphFuseInspectorUtils::ReportFuse
X2ScaleOk
IsSimpleReshape
支持以下 3 种融合场景(x2 前必须有 Transpose):
Run()
GraphPtr
RelinkNode
RemoveFusedNode
ReportFuse
IsTargetVersion
GE_COMPILER_VERSION_NUM >= 90100000
Backgroud(背景信息)
QuantBatchMatmulV4(qbmmv4)+ Transpose 的图融合规则在旧版 canndev 框架中已有实现。现需迁移到新版 GE 融合框架(
FusionBasePass+REG_FUSION_PASS)。融合规则:绕过 QuantBatchMatmulV4 的 x2 和 x2_scale 输入前的 Transpose/Reshape 节点,通过翻转
transpose_x2属性实现融合。支持三种拓扑:Origin(信息来源)
算子图融合框架迁移
Benefit / Necessity (价值/作用)
fusion_result.json上报(9.1.0GraphFuseInspectorUtils::ReportFuse)X2ScaleOk对 null 的处理、IsSimpleReshape对动态 shape 的处理)Design(设计方案)
融合场景
支持以下 3 种融合场景(x2 前必须有 Transpose):
transpose_x2属性transpose_x2属性transpose_x2属性,同时删除整个链实现方案
FusionBasePass,重写Run()方法,使用GraphPtrAPI 直接改图RelinkNode(重连边)和RemoveFusedNode(删节点),ReportFuse在两者之间调用ReportFuse使用 weak 符号声明,IsTargetVersion为 protected virtual 成员函数REG_FUSION_PASS注册,编译宏GE_COMPILER_VERSION_NUM >= 90100000保护