Merged
fix: 迁移 RaggedBinCount V2 推导并规范两算子 golden #6538
raoliang_sacAdd on 21 days ago
fix: 迁移 RaggedBinCount V2 推导并规范两算子 golden #6538
Merged
Pull Request has been successfully merged by CANN-robot.
(Thank you for raoliang_sac's contribution.)21 days ago Created pull request, commit 820087e8
21 days ago Associated issue: test
atomgit-bot
21 days ago Comments:
21 days ago Comments:
变更摘要
本 PR 按 golden 规范统一了 RaggedBinCount 与 SquareSumAll 两个算子的参考计算精度与输出合同。RaggedBinCount 删除了按 testcase_name 切换到独立精确超累加器 oracle 的分支,所有用例统一使用按行 torch.bincount 并按 TTK 下发/提升的 weights_flat.dtype 累加,同时补齐整数输入类型(int32/int64)的容差判据;SquareSumAll 的输出由 reshape(1) 改为 rank-0 标量 reshape(()),参考计算不再强制 FP64,而是保持 TTK 下发精度(Promote 时仍保留提升后的精度)。配套新增/重写 CPU-only 合同测试、强化示例程序的输出校验与失败返回,并同步 CSV 用例与文档说明。Kernel 实现未改动。
主要改动
RaggedBinCount参考实现去分支化:math/ragged_bin_count/tests/assets/golden.py移除了_exact_sum、_float32_from_exact_units、_float64_from_exact_units、_compute_exact_weighted_reference及基于_PRECISION_SPECIAL_WEIGHTS的 testcase 名分支,_compute统一以weights_flat.dtype建累加器并按行torch.bincount,精度只由输入 dtype 决定。- 补全整数输入类型判据并简化适配层:
_TOL新增int32/int64的binary_equal条目,_kernel_golden不再按output_dtypes做astype转换,ragged_bin_count_golden也不再注入默认output_dtypes,输出 dtype 直接沿用计算结果的 dtype。 SquareSumAll输出合同改为 rank-0:_reduce_one改为np.array(x, copy=True, order="C")并reshape(()),不再转float64;_Compose同步由reshape(1)改为reshape(()),两路输出均为标量,与InferShape接口一致。- 示例程序增加输出校验与失败返回:
math/ragged_bin_count/examples/test_geir_ragged_bin_count.cpp中ProcessOutputData改为返回bool,校验输出个数、dtype、shape、字节数及逐元素数值,main在输出非法时返回FAILED,图配置失败时调用ge::GEFinalize(),并显式delete session。 - 新增/重写 CPU-only golden 合同测试: 新增
math/square_sum_all/tests/ut/test_golden_contract.py,验证标量 shape、下发精度保持与_Compose返回 FP32 标量;math/ragged_bin_count/tests/ut/test_ragged_bin_count_golden.py重写为参数化测试,覆盖精度随权重 dtype 而非用例名、Promote 溢出、非法 splits 返回正零、binary_output不读权重及相反无穷大传播 NaN 等合同点。
此外,依据 PR 描述,SquareSumAll 的 1200 条 Kernel/GEIR CSV 同步改为标量输出,RaggedBinCount CSV 中未引用的逗号被修复,文档补充了动态 shape 含义、执行期约束及图模式示例构建命令。
🧩 本次 Review 已使用自定义 Skill:


Incorrect?
atomgit-bot
21 days ago Comments:
21 days ago Comments:


Incorrect?
21 days ago Modify description of pull request
51 messages are collapsed here。 See more
18 days ago Added label: lgtm
CANN-robot
18 days ago Comments:
18 days ago Comments:
The MR can not be merged, because of CodeReview discussion not resolved
If you want to solve this problem, you can click here to do it in the FAQs.


18 days ago Resolved final issue
18 days ago Closed associated issue
18 days ago Merged pull request
描述
RaggedBinCount 删除原生 V1 shape 实现及注册,由已有 runtime V2 推导接管;保留 size 值依赖
.InputsDataDependency({2})、输入 shape 及合法性检查。旧 V1 测试替换为 14 条实际 V2 注册入口测试,覆盖不同 shape/相同元素数、空与标量 weights、int32/int64 常量 size、动态维/rank、非法输入和重复推导覆盖输出。这三份文件选取自 推导迁移 PR #6548 的
e74083196deca466aa0492b904410f9c73ebcf60。只接入 RaggedBinCount,没有接入 MulNoNan、L2Normalize 或 July 任务,原任务分支/PR 保持原状。RaggedBinCount kernel/tiling 未改动。本 PR 保留已有质量加固:按 golden 规范移除 RaggedBinCount 按用例名切换算法的分支,统一 Torch bincount 并保留 TTK 下发精度;SquareSumAll 输出修为 rank-0、1200 条 CSV 同步修正,不再强制 FP64。两算子示例核对输出数量、dtype、shape、字节数和全部数值。SquareSumAll 无生产代码修改。
关联的Issue
https://gitcode.com/cann/ops-math/issues/3695
测试
2026-10-21 最新提交本地 CI
受测 HEAD:
d9ce12b29345e879e47098a556b8cff31a6fe746;主仓 master 快照:d98f2c0ba27be58813200f1a3c9008a092b74ae8。先保留备份并核验 squash 前后同一原始基点的完整二进制 diff 与 tree 一致,再 rebase;当前 PR 相对该主线只有一个提交。使用指定
/workspace/CI-skills/ci_local_check.sh,本任务独立 CANN_Revise,SOCS=ascend950,ascend910b、JOBS=8,两个仓库顺序执行。统一入口实际输出pre-commit: PASS和定向检查全部通过,退出码 0。完整 PR 静态检查、隔离 OAT、Markdown 链接、示例 SKIP 退出契约和 golden Python 语法检查通过。0 条用例或只有构建目标通过的阶段不计为单测覆盖;本地 CI 没有新增 NPU/GPU 数值回归,不替代下方历史精度 FAIL、正式整包集成与性能验收。线上 CI 流水线已由机器人确认启动,结果待返回。
此前 README 清理时获取的 master:
3e45432dc9ed21cd5b00f4fa12c06d9dc7800939;最终 HEAD:066a732fc31b6d00f4402956aa0d27152cb1533c。本轮仅删除 RaggedBinCount、SquareSumAll README 中新增的通用安装、环境加载、build.sh 运行命令及产物路径说明,共 16 行。保留必要接口/能力修正、原有示例和 IR 链接。相对上一轮受测提交
78ec51268e0ce5254f140906b93072f6c7a21de7,两个算子的生产代码、golden、测例及示例均逐字节未变;完成 diff 检查、文档链接/编码/围栏和渲染检查,没有为删说明重复运行 NPU。以下为此前注册迁移和数值核实的历史验证,非本轮重跑:
任务独立 Master/Revise CANN,Ascend950PR_9579;真实 GPU A100-PCIE-40GB、Torch 2.14.1+cu130。构建最多 8 jobs;全部 TTK 显式
--pc=1。该轮 TTK 为3db54be4b479d487ffd44300046ffa664789edea,包含本地比较修复。对应 TTK PR #483 已由用户关闭;下面的 19/19 不能表述为未修改 TTK 主线的通过结果。原比较器结果为 17 PASS、2 FAIL。libopsproto.soV1,两个 values/weights shape 组合报错。inc/;这两个 kernel 依赖自身头与 CANN 头,已部署common/,实际目标图编译运行通过。该告警日志保留,不写成全部自检通过。此前注册迁移阶段未执行完整本地 CI、性能回归或全矩阵三方;本次双平台本地 CI 和线上触发见最新追加记录。旧 CANN 注册的正式整包集成验证仍待完成。
文档更新
按用户要求删除上述两份 README 的冗余环境准备与运行说明,保留必要的动态 shape/接口约束修正、正确产品能力和原有示例链接。示例源码及已经核实的输出检查保持不变。
类型标签
AI/Agent生成声明