| inductor/dvm: adapt to latest dvm API and executor pool
Co-authored-by: huangchengnuo<huangchengnuo1@huawei.com>
# message auto-generated for no-merge-commit merge:
!30584 merge optimize_dvm into v2.7.1
inductor/dvm: adapt to latest dvm API and executor pool
Created-by: SorryNaCN
Commit-by: huangchengnuo
Merged-by: ascend-robot
Description: # 【合入来源】
> (如有)请关联需求文档/issue链接
- [ ] 需求
- [ ] 问题单
- [ ] issue/工单
- [x] 重构优化
- [ ] 资料更新
# 【修改方案】
> 请描述修改内容的具体实现,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列\
> 如果是需求或者重构类的PR,需要补充详细设计文档(说明上下游组件关系、时序图、类图、DFX能力等内容)
1. 对齐 DVM 子模块与分支管理:
- 更新 third_party/dvm/dvm 子模块提交到 b4bc31aaeb340a15ab8facc8b077457a2f4112de。
- 在 .gitmodules 中为 third_party/dvm/dvm 增加 branch = r2.9,统一后续子模块跟踪分支。
2. Python 侧 DVM 适配最新 API:
- torch_npu/_inductor/dvm/__init__.py:移除 KernelType/KernelFlag 依赖,改为 Kernel.K_* / Kernel.F_* 常量。
- torch_npu/_inductor/dvm/op_emitter.py:view_load 去掉 offset 参数;新增 aten._copy_to.default 映射到 cast 逻辑。
- torch_npu/_inductor/dvm/graph_build.py:同步 view_load(shape, stride, dtype) 新签名。
- torch_npu/_inductor/dvm/decomp.py:调整 decomp exclude 列表(移除部分 BN/LN 相关条目)。
- torch_npu/_inductor/dvm/mlir_fusion.py:移除对 can_fuse_horizontal/can_fuse_vertical 的 patch,适配新调度行为。
3. C++ pybind 侧适配最新执行模型:
- torch_npu/csrc/inductor/dvm/pybind_api.h/.cpp:
- 构造参数从 KernelType 切换为 int kernel_type(内部转换)。
- ViewLoad 移除 offset 参数并同步 kernel_.Load 调用。
- 引入 Run/Call 分离接口,补充 ParseTensorCallInputs/ParseDynCallInputs。
- DynGraphSplitKernelPy 引入 executor pool(AcquireExecutor/CloneExecutor + 互斥保护),替换旧计数等待方案,提升并发调用稳定性。
- 增强动态输入类型校验与错误信息。
# 【资料变更】
> 请确认是否涉及资料变更。如涉及,需要在PR中体现,并简要说明修改内容。如不涉及,需填写“不涉及”
不涉及。
# 【接口变更】
> 请确认是否涉及跨代码仓或者客户面可见的接口变更。如涉及,需要详细说明接口以及对应的变更内容,同时需要在资料中体现。如不涉及,需填写“不涉及”
不涉及跨代码仓或客户面可见接口变更。
本次主要为 torch_npu._C.dvm 内部绑定接口适配与执行逻辑重构(上层调用已同步)。
# 【功能验证】
> 说明测试场景,测试方法。如果本次测试方式与常规单元测试不同,请详细说明您的测试步骤\
> 新增/变更内容是否已新增/适配UT测试用例看护,并补充测试自验证截图
1. 子模块配置验证:
- 检查 .gitmodules 中 third_party/dvm/dvm 存在 branch = r2.9。
- 检查子模块提交已更新到目标 commit。
2. DVM API 适配验证:
- 验证 Kernel.K_* / Kernel.F_* 路径可正常创建 Kernel/DynKernel/GraphSplitKernel。
- 验证 view_load 新签名链路(op_emitter -> graph_build -> pybind)参数一致。
3. 图编译与执行验证:
- 验证 aten._copy_to 走 cast 路径可正常生成 DVM 表达式。
- 验证静态/动态 graph split 路径执行可用,动态场景下 executor pool 可正常获取/归还 executor。
4. 本次未新增 UT 用例;回归依赖现有 inductor/dvm 测试链路与CI。
# 【CheckList】
> PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x]
- [x] 代码注释完备,正确记录错误日志
- [x] 代码实现进行了返回值、空指针等校验
- [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等
- [x] PR持续集成流水线(CI)执行通过,代码检查无异常
See merge request: Ascend/pytorch!30584 | 3 个月前 |