Pull Request has been successfully merged by CANN-robot.
(Thank you for tan_xin's contribution.)变更摘要
本次变更主要围绕算子测试用例与样例的可运行性做适配:circular_pad_grad 的 golden 实现增强了对 torch.Tensor 输入的兼容,并在非法输入场景下由零参考替代异常中断;pad_v2 的 GE IR 样例修正了头文件引用路径与符号链接属性。
主要改动
- golden 输入兼容
torch.Tensor:circular_pad_grad_golden与_aclnn_circular_pad_grad_golden增加对grad_output、paddings为torch.Tensor时的detach().cpu().numpy()转换,origin_dtype改为从 torch dtype 字符串获取,bfloat16判断由等值比较改为"bfloat16" in origin_dtype以同时覆盖 numpy 与 torch 两种来源。 - 新增零参考降级函数
_aclnn_zero_fallback:对数学上必然失败的非法输入(expected_error用例),返回与输出容器同 shape/dtype 的零张量,使用例继续进入算子侧校验而非直接报GOLDEN_FAILURE。 - aclnn spec 的
golden接口签名调整:AclnnCircularPad2dBackwardSpec.golden与AclnnCircularPad3dBackwardSpec.golden新增gradInput入参,并以try/except包裹原计算逻辑,异常时回退调用_aclnn_zero_fallback(gradInput)。 pad_v2样例头文件引用修正:test_geir_pad_v2.cpp移除不再需要的experiment_ops.h,并将pad_v2_proto.h的引用路径由../op_graph/调整为../../op_graph/。GetSampleBuffers链接属性调整:样例中的声明由std::vector<uint8_t*>& GetSampleBuffers();改为static版本,影响该符号在样例内的链接范围。
🧩 本次 Review 已使用自定义 Skill:


代码审查
审查结论
变更文件覆盖确认
conversion/circular_pad_grad/tests/assets/golden.py:已审查(3 处问题,见下)。- 已核对:
golden新增第 4 个位置参数gradInput与仓库 aclnn spec 惯例一致(参考conversion/circular_pad/tests/assets/golden.py的golden(x, padding, out, **kwargs)),未构成签名破坏;origin_dtype用str(grad_output.dtype)+"bfloat16" in origin_dtype对torch.bfloat16("torch.bfloat16")与 ml_dtypes"bfloat16"均成立。
- 已核对:
conversion/pad_v2/examples/arch35/test_geir_pad_v2.cpp:no issues。../../op_graph/pad_v2_proto.h由conversion/pad_v2/examples/arch35/解析为conversion/pad_v2/op_graph/pad_v2_proto.h(该文件确实存在,README 116 行也以op_graph/pad_v2_proto.h为 IR 接口引用),旧路径../op_graph/指向不存在的examples/op_graph/,此改动是构建路径修正。static std::vector<uint8_t*>& GetSampleBuffers();与文件内 222 行的static定义保持一致,消除了「非 static 声明后跟 static 定义」的编译错误,属正确修正。- 移除
#include "experiment_ops.h":示例使用到的op::Data/op::PadV2/aclgrphDumpGraph分别由array_ops.h/nn_other.h/ge_ir_build.h与本地 proto 头覆盖,且该示例在本仓无构建目标(无 CMake 引用);受审查范围限制无法读取 GE 外部头核对op::PadV2的唯一声明位置,因此不作为问题上报。
发现清单
- P2:aclnn spec 用裸
except Exception吞掉 golden 异常并返回全零参考(2d/3d 两处同源)。 - P2:
circular_pad_grad_golden对 torch 张量直接.numpy(),bfloat16 会抛TypeError,与文件内_torch_to_numpy_tensor的 bf16 处理分叉。 - P3(可选强化):
_aclnn_zero_fallback未校验gradInput类型,且在 except 分支内二次崩溃会掩盖原始异常;返回类型与正常路径不一致。
整体风险判断
改动方向(补 torch 输入支持、修正构建 include/链接属性)总体合理,C++ 部分风险低;主要风险集中在 golden 侧的异常兜底策略——它把「golden 崩溃」统一转成「全零参考」,会在合法性用例上产生假通过或误导性失败,建议在合入前收窄降级条件并保留异常信息。
| 类型 | 数量 |
|---|---|
| 🔴 阻塞 | 0 |
| 🟡 建议 | 2 |
💬 仅评论
🧩 本次 Review 已使用自定义 Skill:


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
✅ Congratulations! All modules have met the lgtm and approve requirements.
Module Approval Details
| module | lgtm status | approve status |
|---|---|---|
| repo-cann/ops-math | ✅ zhanw_coding, 汤平川 (2/2) | ✅ zhanw_coding, 汤平川 (2/1) |
💡 Tip:
- Committer can comment
/approveor/lgtm- Commenting
/approveimplies both code review (lgtm) and intent to merge (approve)
CLA Signature Pass
tan_xin, thanks for your pull request. All authors of the commits have signed the CLA. 👍


| 🚀 CI 流水线已启动 |
|---|
| 📋 执行详情: 点击查看流水线 |


您好,PR已满足合入指标,请尽快联系Committer进行合入。如暂时不需要合入,请在PR标题前加[WIP]


/lgtm
/approve


/lgtm
/approve


描述
修复
conversion/pad_v2/examples/arch35/test_geir_pad_v2.cpp(PadV2 算子 GEIR 图模式样例)的编译问题:examples/arch35/,与op_graph/相差两级目录,由#include "../op_graph/pad_v2_proto.h"改为#include "../../op_graph/pad_v2_proto.h"(对齐同仓 parallel_concat example 写法)。#include "experiment_ops.h"。GetSampleBuffers()前置声明补充static,与定义处的static声明保持一致,消除 linkage 冲突导致的编译错误。关联的Issue
关联 Issue #4353
测试
test_geir_pad_v2.cpp编译验证通过。文档更新
NA
类型标签