已合并
[inductor]sync graph optimization and multi stream ut #44482
zzll创建于 11 天前
[inductor]sync graph optimization and multi stream ut #44482
已合并
zzll创建于 11 天前
zzll
11 天前

#3978

【合入来源】

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

【修改方案】

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

【资料变更】

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

【接口变更】

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

【功能验证】

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

【CheckList】

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

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

变更摘要

该 PR 主要同步补充 inductor 侧图优化与多流相关的单元测试,新增 test/_inductor/test_ascend_graph_pass.pytest/_inductor/test_multi_stream.py。其中图优化测试覆盖 torch_npu._inductor.fx_passes.ascend_custom_passes.ascend_graph_pass 中的多种 fold/erase pass,并通过 torch.compile(..., backend="inductor") 与直接 FX 图变换两种方式对比 eager 结果;多流测试则通过 mock 环境覆盖 CATLASS 与 NPUTriton 代码生成路径在单流/多流下的 origin_node 传递及 workspace 分配/释放行为。

主要改动

  • 新增图优化 UT 用例:在 test_ascend_graph_pass.py 中定义 CastStandardModelCatSliceCatModelFoldAddModelFoldCatModel 等模型,并分别调用 fold_castcat_slice_cat_fold_passfold_four_op_passfold_catfold_reducefold_slicefold_wherepad_slice_fold 等 pass,验证图变换前后结果与 eager 计算一致。
  • 新增图优化编译对比用例:针对同一批算子组合提供 *_compile_cases 测试,使用 torch.compile(..., backend="inductor") 与标准计算结果比对,覆盖 cast、cat/slice/cat、四则运算、clone/detach/expand、reduce、view/squeeze、where、pad+slice 等场景。
  • 新增多流 UT 测试替身:在 test_multi_stream.py 中定义 FakeGraphFakeNodeFakeKernelFakeWrapperFakeScheduleGraph 等 mock 对象,用于隔离测试 CATLASSTemplateKernelCATLASSSchedulingNPUTritonSchedulingNPUIndexTritonKernel 的代码生成行为。
  • 覆盖单流/多流分支行为:通过 patch("...is_multi_stream", return_value=...) 切换单流/多流模式,验证多流时 origin_node 会透传到 kernel 调用及 workspace 的 generate_workspace_allocation/generate_workspace_deallocation,单流时则传 None
  • 新增端到端多流编译用例:提供 test_multi_stream_compile_casetest_single_stream_compile_case,在 is_multi_stream 开关不同取值下对包含 embedding、mm、cat、addmm 的算子图执行 torch.compile,并对比 inductor 输出与 eager 结果。
likedislike
atomgit-bot
atomgit-bot
11 天前 评论:

代码审查

✅ 未发现问题

likedislike
ascend-robotascend-robot成员
11 天前 添加了label:ascend-cla/yes
此处折叠了50条消息 查看更多
dezheng889成员
7 天前 评论:

/lgtm
/approve

likedislike
ascend-robotascend-robot成员
7 天前 添加了label:approvedlgtm
ascend-robotascend-robot成员
7 天前 关闭了关联的issue
ascend-robotascend-robot成员
7 天前 合入了pull request
ascend-robot
ascend-robot成员
7 天前 评论:
流水线 pytorch_gitcode_PR_multiVersion#14109 [ commitID:1ba7a219 ] 已完成
likedislike