建议在启动 Python 前设置环境变量,避免模块 import 时读取不到开关:
# 开启 matmul_backward 分解 export INDUCTOR_DVM_ENABLE_MATMUL_BACKWARD_DECOMP=1 选项1:# GraphFusion 只融合包含 matmul 的子图,不含 matmul 的图 fallback export INDUCTOR_DVM_GRAPH_FUSION_ONLY_MATMUL_GRAPHS=1 选项2:# GraphFusion 支持 op 列表只保留 matmul 类 op: mm/bmm/addmm 建议先试试这个 export INDUCTOR_DVM_GRAPH_FUSION_ONLY_MATMUL_OPS=1
GraphFusion 本身需要显式 enable:
from torch_npu._inductor.dvm.graph_fusion import DvmGraphFusionPatch DvmGraphFusionPatch.enable() # 后面再跑 torch.compile(...)
INDUCTOR_DVM_ENABLE_MATMUL_BACKWARD_DECOMP=1
aten.matmul_backward.default
INDUCTOR_DVM_GRAPH_FUSION_ONLY_MATMUL_GRAPHS=1
mm/bmm/addmm
INDUCTOR_DVM_GRAPH_FUSION_ONLY_MATMUL_OPS=1
GRAPH_FUSION_SUPPORT_OP
aten.mm.default / aten.bmm.default / aten.addmm.default
这些环境变量是在模块 import 时读取的,所以需要先 export,再启动 Python 或运行脚本。
开启方式
建议在启动 Python 前设置环境变量,避免模块 import 时读取不到开关:
# 开启 matmul_backward 分解 export INDUCTOR_DVM_ENABLE_MATMUL_BACKWARD_DECOMP=1 选项1:# GraphFusion 只融合包含 matmul 的子图,不含 matmul 的图 fallback export INDUCTOR_DVM_GRAPH_FUSION_ONLY_MATMUL_GRAPHS=1 选项2:# GraphFusion 支持 op 列表只保留 matmul 类 op: mm/bmm/addmm 建议先试试这个 export INDUCTOR_DVM_GRAPH_FUSION_ONLY_MATMUL_OPS=1GraphFusion 本身需要显式 enable:
from torch_npu._inductor.dvm.graph_fusion import DvmGraphFusionPatch DvmGraphFusionPatch.enable() # 后面再跑 torch.compile(...)开关含义
INDUCTOR_DVM_ENABLE_MATMUL_BACKWARD_DECOMP=1:把aten.matmul_backward.default分解成 matmul 相关算子。INDUCTOR_DVM_GRAPH_FUSION_ONLY_MATMUL_GRAPHS=1:只融合包含mm/bmm/addmm的 GraphFusion 子图,其余子图 fallback。INDUCTOR_DVM_GRAPH_FUSION_ONLY_MATMUL_OPS=1:把GRAPH_FUSION_SUPPORT_OP限制成aten.mm.default / aten.bmm.default / aten.addmm.default。注意
这些环境变量是在模块 import 时读取的,所以需要先 export,再启动 Python 或运行脚本。