| [Fix] 修复 TopKV2 Host InferShape 的 k 范围校验和错误码 Co-authored-by: KaranocaVe<karanocave@qq.com> # message auto-generated for no-merge-commit merge: !4987 merge fix/2026-08-23-ops-math-topkv2-invalid-k-infershape-01 into master [Fix] 修复 TopKV2 Host InferShape 的 k 范围校验和错误码 Created-by: KaranocaVe Commit-by: KaranocaVe Merged-by: cann-robot Description: ## 修复摘要 修复 TopKV2 Host InferShape 对动态输入 k 缺少范围校验的问题。此前 k < 0 或 k 大于排序轴长度时,形状推导仍返回成功并把非法值写入输出 shape;同时,负责 公共推导的 helper 使用 bool 返回类型,不能准确传递 GRAPH_FAILED。 现在将 helper 返回类型改为 graphStatus,对负 k 返回 GRAPH_FAILED,并在排序轴 长度已知时拒绝 k > axis_size,使 Host 形状推导与 TopKV2 约束及 AICPU 参数校验 保持一致。 ## 变更范围 - math/top_k_v2/op_host/top_k_v2_infershape.cpp:增加 k 非负校验和已知排序轴 长度的上界校验,并修正 helper 返回类型以保留标准错误码。 - math/top_k_v2/tests/ut/op_host/test_top_k_v2_infershape.cpp:增加 k 等于轴长 的合法边界对照,并覆盖 k=axis_size+1、k=-1 两个非法方向。 - 评审补充修复(当前 head c1ec6444d406e7572f26a9091ce05b1d08732a93):补全 dim < -rank 的非法负轴校验,避免归一化后使用负下标读取排序轴长度;同时增加 rank=2, dim=-3 返回 GRAPH_FAILED 的回归用例。 - 兼容性:合法 k、合法负轴和未知轴长度的动态 shape 推导保持原有行为;仅提前拒绝 明确非法参数,不涉及 ABI、kernel 或公开接口。 ## 测试结果 - 在固定 commit 0a2ce5b57caec6068d9e5658b740c2d41482aa15 的 Host UT 配置下,执行 cmake --build <build-dir> --target math_op_host_ut -- -j2,退出码为 0,完整 TopKV2 Host UT 共 12/12 通过。 - 执行 <build-dir>/tests/ut/op_host/math_op_host_ut --gtest_filter='TopKV2InferShape.*',退出码为 0,定向回归 4/4 通过: k=32 返回 GRAPH_SUCCESS,k=33 和 k=-1 返回 GRAPH_FAILED。 - 当前 head 已包含 dim=-3 的负轴越界回归用例,且该 head 的 GitCode CI 状态已回查为 通过。 - 验证环境 Toolkit/OPP 为 CANN 9.1.0,目标源码属于后续开发线;本次结论限定为 Host ## 关联的 Issue - https://gitcode.com/cann/ops-math/issues/2814 ## Patch 来源 - 初始基线 commit:0a2ce5b57caec6068d9e5658b740c2d41482aa15 - 初始 Patch SHA-256:bc407fd5d64ab0bff69c95f7e3d3b6834d2cf7d557f4516decd6b5882e6b6151 - 评审补充修复 commit:c1ec6444d406e7572f26a9091ce05b1d08732a93 See merge request: cann/ops-math!4987 | 26 天前 |