| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
dvm: refactor ws alloc paths and reorder pybind_api functions Co-authored-by: huangchengnuo<huangchengnuo1@huawei.com> # message auto-generated for no-merge-commit merge: !31780 merge hcn/dvm-to-v2.8-pr-23f022a7 into v2.8.0 dvm: refactor ws alloc paths and reorder pybind_api functions Created-by: SorryNaCN Commit-by: huangchengnuo Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**如有社区issue,请关联issue链接**</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [ ] 需求 - [ ] 问题单 - [ ] issue/工单 - [ ] 重构优化 - [ ] 资料更新 # 【修改方案】 > 请描述修改内容的具体实现,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列\ > 如果是需求或者重构类的PR,需要补充详细设计文档(说明上下游组件关系、时序图、类图、DFX能力等内容) # 【资料变更】 > 请确认是否涉及资料变更。如涉及,需要在PR中体现,并简要说明修改内容。如不涉及,需填写“不涉及” # 【接口变更】 > 请确认是否涉及跨代码仓或者客户面可见的接口变更。如涉及,需要详细说明接口以及对应的变更内容,同时需要在资料中体现。如不涉及,需填写“不涉及” # 【功能验证】 > 说明测试场景,测试方法。如果本次测试方式与常规单元测试不同,请详细说明您的测试步骤\ > 新增/变更内容是否已新增/适配UT测试用例看护,并补充测试自验证截图 # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [ ] 代码注释完备,正确记录错误日志 - [ ] 代码实现进行了返回值、空指针等校验 - [ ] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [ ] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!31780 | 4 个月前 | |
inductor: port DVM support to v2.8 Co-authored-by: huangchengnuo<huangchengnuo1@huawei.com> # message auto-generated for no-merge-commit merge: !31058 merge dvm-to-v2.8-pr into v2.8.0 inductor: port DVM support to v2.8 Created-by: SorryNaCN Commit-by: huangchengnuo Merged-by: ascend-robot Description: <!-- Thanks for sending a pull request! --> ## What type of PR is this? /kind feature ## What does this PR do / why do we need it 本 PR 将 v2.7.1 分支中的 DVM 相关能力迁移到 v2.8.0,为 inductor 增加 DVM 融合支持,并补齐绑定、构建与测试。 主要改动: - 引入 DVM 第三方依赖并接入构建 - 新增/迁移 DVM inductor 融合流水线代码 - 新增 DVM C++ pybind 接口并在 _C 初始化阶段注册 - 补充 DVM 相关测试与 public bindings 清单 - 调整 inductor 后端选择逻辑,支持 npu_backend=dvm --- ## DVM 融合模式说明(按当前代码更新) 当前 DVM 支持两种融合路径: 1. mlir_fusion:复用 Inductor-MLIR 主流程,只替换融合范围与 codegen 引擎为 DVM 2. graph_fusion:独立图分区融合路径,通过 CapabilityBasedPartitioner 做子图融合并落到 DVM ### 1) mlir_fusion 设计: - 复用 Inductor-MLIR 编译流程 - 在融合子图阶段按 DVM 支持规则筛选 - 使用 DVM codegen 生成并执行融合 kernel 特点: - 与现有 inductor/mlir 链路协同,接入成本低 - 融合行为与主编译流程一致性更好 ### 2) graph_fusion 设计: - 通过 DvmGraphFusionPatch 挂接 post-grad pass - 使用 CapabilityBasedPartitioner 划分可融合子图 - 生成 dvm::fused_graph_* 自定义算子并在代码生成阶段替换为 DVM kernel 调用 特点: - 独立融合路径,可扩展性强 - pattern 控制更灵活 > dvm_graph_fused_* 命名来自 graph fusion 路径(dvm_graph_fusion(...) pass 生成融合子图名)。 --- ## 使用方式(更新后的正确接口) ### A. 启用 mlir_fusion 路径 推荐三种方式(二选一即可): 1. config 方式 python import torch import torch_npu import torch_npu._inductor torch._inductor.config.npu_backend = "dvm" compiled = torch.compile(model, backend="inductor", dynamic=True) out = compiled(*inputs) 2. options 方式 python compiled = torch.compile( model, backend="inductor", dynamic=True, options={"npu_backend": "dvm"} ) 3. 环境变量方式(需在 torch.compile 前设置) python import os os.environ["TORCHINDUCTOR_NPU_BACKEND"] = "dvm" ### B. 启用 graph_fusion 路径 python import torch import torch_npu from torch_npu._inductor.dvm.graph_fusion import DvmGraphFusionPatch with DvmGraphFusionPatch(): compiled = torch.compile(model, backend="inductor", dynamic=False) out = compiled(*inputs) --- ## 两种模式对比 | 模式 | 依赖 Inductor-MLIR 主流程 | Pattern 控制 | 典型命名 | 备注 | | - | - | - | - | - | | mlir_fusion | 是 | 中 | dvm_fused_* | 推荐默认接入路径 | | graph_fusion | 否(独立图分区) | 高 | dvm_graph_fused_* | 更适合定制/实验性融合 | **注意:矩阵相关算子(mm/bmm/addmm)仅在 graph_fusion 融合模式支持。** --- ## Which issue(s) this PR fixes Fixes # ## Special notes for your reviewers - 本 PR 为跨版本迁移,核心逻辑与 v2.7.1 DVM 实现保持一致,冲突已按 v2.8.0 基线语义对齐。 - 建议重点 review: - _C 初始化与 DVM pybind 注册 - torch_npu._inductor 后端分支与 npu_backend=dvm 使能逻辑 - mlir_fusion / graph_fusion 两条路径的行为一致性 See merge request: Ascend/pytorch!31058 | 5 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 4 个月前 | ||
| 5 个月前 |