Closed
fix(op_graph): 迁移 RaggedBinCount 和 MulNoNan 推导注册 #6548
raoliang_sacAdd on 21 days agoClosed at 15 days ago
fix(op_graph): 迁移 RaggedBinCount 和 MulNoNan 推导注册 #6548
Closed
raoliang_sacAdd on 21 days agoClosed at 15 days ago
raoliang_sacCollaborators
21 days ago

描述

RaggedBinCount 自带 V1 推导会先修改输入 shape,再推导输出,使已有 runtime 2.0 的输入不可变契约不能生效;MulNoNan 的 dtype 推导位于 op_host,图推导注册接管时需要在 op_graph 提供对应入口。

  • 删除 RaggedBinCount 自带 V1,实现统一到已有 V2;保留 size 的输入数据依赖 .InputsDataDependency({2})、输入校验及输出写入逻辑。
  • 将 14 条旧 V1 测试替换为 14 条实际 V2 注册测试,覆盖 values/weights 不同形状但元素数一致时输入 shape 不变、空/标量 weights、int32/int64 常量 size(含超过 32 位)、动态 rank/dim、非法输入、重复推导覆盖旧输出及依赖声明。
  • MulNoNan dtype 推导移至 op_graph,检查空 context 和两个输入 dtype 一致性,返回输出 dtype 写入状态。原有 4 条 dtype 测试随迁移移动,新增混合 dtype 拒绝测试。

不修改计算 kernel、tiling、golden 或支持格式。需要配套 canndev 的 MulNoNan 旧注册隔离:https://gitcode.com/cann/canndev/pull/82602。同批 ops-nn 修复:https://gitcode.com/cann/ops-nn/pull/12383。

关联的Issue

https://gitcode.com/cann/ops-math/issues/3697

测试

  • 基点 79b137ed89ff59cf2fc3405a6e41d91995254471;任务目录独立 CANN_Master / CANN_Revise,Toolkit 9.3.0。
  • 基线与修改版 A5 包实际构建、安装成功:bash build.sh --pkg --ops=ragged_bin_count,mul_no_nan --soc=ascend950 --vendor_name=registry_migration -j8。
  • Host/Graph UT:112 + 6 = 118 全部通过。
  • TTK 9e74ae65ec9dd7e2ed9fbb5432f4e6b1d8ee72be、GEIR、--pc=1、单设备、冻结输入/仓库 golden,Promote/stat_rel_err。A5 修改版 MulNoNan 16 条、RaggedBinCount 6 条,静态与动态共 44 次执行通过。
  • MulNoNan 覆盖 FP16/FP32/BF16/INT32、等形/两种单边标量/交叉广播;RaggedBinCount 覆盖 int32/int64、values/weights 形状不同但元素数一致的三种组合。修改版未进入目标 V1,V2 shape/dtype 回调指针来源为本次原生图推导库。
  • A5 基线两算子各 2 条对照用例均通过。A3 Ascend910_9362 两算子各 2 条,基线/修改版静态动态共 16 次执行通过;A3 使用符合存量约束的向量输入并保留 canndev V1。RaggedBinCount 首次因诊断库未处理 RTLD_LOCAL 加载而失败,修复诊断解析后重跑通过,未改生产实现。
  • 提交前 clang-format 仅调整 3 个文件空白/换行,未改变语义。

验证边界:A5 为真实原生算子包加旧 V1 注册省略诊断;A3 为当前源码编译的 ARM 图推导库搭配存量 kernel。canndev 正式整包受本地内部构建依赖缺失阻塞,仍需正式产品包集成验证。本轮未跑全量本地 CI、GPU 三方精度或性能对比。

文档更新

无 README 或示例改动。

类型标签

AI/Agent生成声明

likedislike
The current Pull Request has been closed by raoliang_sac.
Rraoliang_sacCollaborators
21 days ago Created pull request, commit 78922307
atomgit-bot
atomgit-bot
20 days ago Comments:

变更摘要

本 PR 围绕算子推导注册的迁移展开:在 op_graph 层为 MulNoNan 新增 dtype 推导入口,并将 RaggedBinCount 自带的 V1 推导实现移除,使图推导统一走已有的 V2 注册路径。MulNoNan 在 op_host 中原有的 InferDataType4MulNoNan 及其注册被删除,改为 op_graph 中的 InferDataType4MulNoNan,新增空 context 校验和两个输入 dtype 一致性校验,通过 IMPL_OP(MulNoNan).InferDataType(...) 注册;RaggedBinCount 的 RaggedBinCountLegacyInferShape、ReadLegacyBinCount 及 COMMON_INFER_FUNC_REG 一并删除,改由注册的 V2 推导回调承担输出写入与输入校验。测试同步迁移:删除旧 V1 测试文件,新增基于 OpImplSpaceRegistryV2 的注册回调测试,并调整 MulNoNan 的 dtype 测试归属。

主要改动

  • 新增 MulNoNan 图推导 dtype 入口: 新增 math/mul_no_nan/op_graph/mul_no_nan_graph_infer.cpp,实现 InferDataType4MulNoNan,对空 context 返回 GRAPH_FAILED,校验两个输入 dtype 一致后以 SetOutputDataType(0, dtype) 写出,并通过 IMPL_OP(MulNoNan).InferDataType(InferDataType4MulNoNan) 注册。
  • 移除 MulNoNan op_host 中的 dtype 推导: 在 math/mul_no_nan/op_host/mul_no_nan_infershape.cpp 删除 InferDataType4MulNoNan 及 MUL_NO_NAN_INPUT_X1_INDEX、MUL_NO_NAN_OUTPUT_Y_INDEX 常量,注册语句简化为 IMPL_OP_INFERSHAPE(MulNoNan).InferShape(InferShape4MulNoNan)。
  • 删除 RaggedBinCount 自带 V1 推导: 在 math/ragged_bin_count/op_graph/ragged_bin_count_graph_infer.cpp 移除 ReadLegacyBinCount、IMPLEMT_COMMON_INFERFUNC(RaggedBinCountLegacyInferShape) 及 COMMON_INFER_FUNC_REG(RaggedBinCount, RaggedBinCountLegacyInferShape),不再在 ge 命名空间内注册旧推导。
  • 测试迁移与新增: 删除 test_ragged_bin_count_legacy_infer_pass.cpp,新增 test_ragged_bin_count_registry_infershape.cpp,通过 impl->infer_shape 验证 IsInputDataDependency(2U)、输入 shape 保持不变、常量 size 读取及非法输入拒绝等;MulNoNan 的 4 条 dtype 测试从 test_mul_no_nan_infershape.cpp 移至新增的 test_mul_no_nan_graph_infer_pass.cpp,并新增 RejectsMismatchedInputsWithoutLegacyVerifier 混合 dtype 拒绝用例。

🧩 本次 Review 已使用自定义 Skill:

likedislike
Incorrect?
atomgit-bot
atomgit-bot
20 days ago Comments:

代码审查

✅ 未发现问题


🧩 本次 Review 已使用自定义 Skill:

likedislike
Incorrect?
CANN-robotCANN-robotCollaborators
20 days ago Added label: cann-cla/yes
CANN-robot
CANN-robotCollaborators
20 days ago Comments:

Thanks for your pull-request.
The full list of commands accepted by me can be found at here.
You can get sig-info at here.
You can self-configure the PR merge rules for this repository. For more details, please refer to Here.
For more, you also can visit HICANN.


PR Approval Progress

⚠️ This PR does not yet meet the following requirements:lgtm (requires ≥ 2 person(s) per module)、approve (requires ≥ 1 person(s) per module)

Module Approval Details

module lgtm status approve status
repo-cann/ops-math ❌ (0/2)(You can also ask: clinglai0517, xuejinghui, 徐鲁威, yue-ma, 张磊) ❌ (0/1)(You can also ask: 顾宝成, 王林木, 冯彤, xuejinghui, andong_hw)

💡 Tip:

  • Committer can comment /approve or /lgtm
  • Commenting /approve implies both code review (lgtm) and intent to merge (approve)
likedislike
CANN-robot
CANN-robotCollaborators
20 days ago Comments:

CLA Signature Pass

raoliang_sac, thanks for your pull request. All authors of the commits have signed the CLA. 👍

likedislike
CANN-robotCANN-robotCollaborators
20 days ago Set yue-ma,zhou-qilong,wangrui_,rxtfeng,loov1,zhangzijie,jia0liang,zl_hw,songkai111,chenxingyu18,pingchuantang,llimwang,gubaocheng,andong_hw,xuejinghui,zhanw_coding,clinglai0517 as approver
CANN-robotCANN-robotCollaborators
20 days ago Set yue-ma,zhou-qilong,wangrui_,rxtfeng,loov1,zhangzijie,jia0liang,zl_hw,songkai111,chenxingyu18,pingchuantang,llimwang,gubaocheng,andong_hw,xuejinghui,zhanw_coding,clinglai0517 as approver
Rraoliang_sacCollaborators
20 days ago Modify description of pull request
Rraoliang_sacCollaborators
15 days ago Close pull request