已合并
inductor/fx_passes: dynamic graph optimization e2e #44486
inductor/fx_passes: dynamic graph optimization e2e #44486
已合并
dezheng889创建于 11 天前
dezheng889成员
11 天前

【合入来源】

如有社区issue,请关联issue链接
请勿携带内部流程信息(需求链接、问题单、内部issue等)

【修改方案】

请描述修改内容的具体实现,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列
如果是需求或者重构类的PR,需要补充详细设计文档(说明上下游组件关系、时序图、类图、DFX能力等内容)

【资料变更】

请确认是否涉及资料变更。如涉及,需要在PR中体现,并简要说明修改内容。如不涉及,需填写“不涉及”

【接口变更】

请确认是否涉及跨代码仓或者客户面可见的接口变更。如涉及,需要详细说明接口以及对应的变更内容,同时需要在资料中体现。如不涉及,需填写“不涉及”

【功能验证】

说明测试场景,测试方法。如果本次测试方式与常规单元测试不同,请详细说明您的测试步骤
新增/变更内容是否已新增/适配UT测试用例看护,并补充测试自验证截图

【CheckList】

PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x]

likedislike
Pull Request已成功合入, 合并人@ascend-robot
(感谢 dezheng889 的贡献)
Ddezheng889成员
11 天前 创建了 pull request,commit 26502df2
atomgit-bot
atomgit-bot
11 天前 评论:

变更摘要

本 PR 主要面向 NPU Inductor 的动态图优化端到端能力,新增了三类图改写 pass:grouped_matmul_fusion_passmulti_slice_concat_passstack_sum_to_add_chain_pass,将多个小 GEMM、多段列切片拼接、以及 stack+sum 等模式折叠为更少的内核调用;同时新增 npu_ext::multi_slice_concat 的 Triton 模板与 lowering 实现,并引入相应配置开关与注册机制。改动还包括 check_op_util.py 中的匹配辅助函数,以及三个 pass 的完整单元测试与编译端到端测试。

主要改动

  • 新增三项图优化 pass 及配套测试: 在 ascend_graph_pass.py 中提供 grouped_matmul_fusion_passmulti_slice_concat_passstack_sum_to_add_chain_pass,分别将独立小矩阵乘合并为 npu_grouped_matmul、将固定偏移列切片拼接改写为 multi_slice_concat、将 stack+sum 改写为加法链;并新增 test_grouped_matmul_pass.pytest_multi_slice_concat_pass.pytest_stack_sum_pass.py 覆盖静态/动态 shape、拒绝条件与数值一致性。
  • 新增 multi_slice_concat 内核 lowering: 在 kernel/multi_slice_concat.py 中实现 _register_npu_inductor_multi_slice_concat,基于 NPUTritonTemplate 按段计划生成 kernel 源码、按计划缓存模板、去重同 buffer 输入并在失败时回退到逐段拷贝,同时在 kernel/__init__.pytorch_npu/_inductor/__init__.py 中按 enable_multi_slice_concat 开关完成导入与注册。
  • 新增配置项控制优化行为: 在 config.py 中新增 _parse_int_envstack_sum_add_chain_max_inputsenable_multi_slice_concatmulti_slice_concat_max_segments/max_sources/max_masksenable_grouped_matmul_fusiongrouped_matmul_min_groups/max_groups_per_call/max_rows 等环境变量,用于限制各 pass 的分组规模、源/掩码数量等上限。
  • 扩展默认关闭 pass 注册机制: 在 register_custom_pass.py 中将 multi_slice_concat_passgrouped_matmul_fusion_pass 纳入 DEFAULT_SHUT_DOWN_PASSES,使其在未开启 enable_multi_slice_concatenable_grouped_matmul_fusion 时不会被注册执行。
  • 新增图匹配辅助工具: 在 check_op_util.py 中新增 is_single_usernormalize_dim,用于判定节点是否仅有一个消费者,以及将可能为负的维度规范到有效范围,供各 pass 在匹配与拒绝条件判断中使用。
likedislike
atomgit-bot
atomgit-bot
11 天前 评论:

代码审查

✅ 未发现问题

likedislike
ascend-robotascend-robot成员
11 天前 添加了label:stat/needs-squash
此处折叠了84条消息 查看更多
ascend-robotascend-robot成员
11 天前 添加了label:lgtm
li_jing_hw成员
11 天前 评论:

/approve

likedislike
ascend-robotascend-robot成员
11 天前 添加了label:approved
ascend-robotascend-robot成员
11 天前 合入了pull request
ascend-robot
ascend-robot成员
11 天前 评论:
流水线 pytorch_gitcode_PR_multiVersion#14000 [ commitID:198185ed ] 已完成
likedislike