已合并
修复 Relu6D def 驱动 dtype 及算子原型重复定义问题 #8640
修复 Relu6D def 驱动 dtype 及算子原型重复定义问题 #8640
已合并
zhongheng创建于 8月13日
zhongheng
8月13日

描述

本 PR 修复 ops-transfer-test-scan 检查发现的以下转测准入问题:

  1. 修复 Relu6D“def 驱动 dtype”问题。
  • 移除 Relu6D tiling key 中的 dtype 模板声明和 dtype 分发逻辑。
  • Host tiling 统一设置固定 tiling key 0。
  • Kernel 入口直接使用 def 生成的 DTYPE_X 实例化 KernelRelu6D<DTYPE_X>。
  • 更新 Relu6D Host UT 和 Kernel UT,使测试逻辑与 def 驱动 dtype 的实现保持一致。

修复后,FP16、FP32、INT32、BF16 四种类型均可通过 def 配置生成并完成正式二进制编译。

  1. 修复 Relu6D 和 SmoothL1LossGrad 重复定义问题。

参考 PR 8552 的处理方式,不删除已有 REG_OP 定义,而是增加统一的宏保护:

  • Relu6D:OPS_PROTO_DEF_RELU6D
  • SmoothL1LossGrad:OPS_PROTO_DEF_SMOOTHL1LOSSGRAD

宏保护已添加至对应算子 proto 及公共扩展头,避免多份 proto 合并或共同包含时重复展开同名算子定义。

关联的Issue

https://gitcode.com/cann/ops-nn/issues/4780

测试

完成以下验证:

  1. Relu6D Host/Proto UT

    • 24/24 通过。
    • 覆盖 FP16、FP32、INT32、BF16、空 Tensor、标量、不同 shape、非法 dtype、非法 format、9D shape 和不同 scale 等场景。
    • 成功验证 tiling key 固定为 0。
  2. Relu6D Kernel UT

    • 5/5 通过。
    • 覆盖 FP32、FP16、INT32、BF16 以及 FP32 多轮循环场景。
    • 测试过程中输入数据和 golden 数据均成功生成。
  3. Proto 合并及编译

    • Relu6D 本地 proto、SmoothL1LossGrad 本地 proto 与公共扩展 proto 合并并编译成功。
    • 未出现算子原型重复定义错误。
  4. Relu6D 正式二进制编译

    • Ascend950PR_9599 编译成功。
    • 成功生成 FP16、FP32、INT32、BF16 四种 dtype 的独立二进制产物。
    • 最终结果:[SUCCESS] Build binary success!
  5. 冒烟已过

  6. 代码检查

    • git diff --check 通过。

文档更新

类型标签

AI/Agent生成声明

likedislike
Pull Request已成功合入, 合并人@CANN-robot
(感谢 zhongheng 的贡献)
Zzhongheng
8月13日 创建了 pull request,commit 19052790
Zzhongheng
8月13日 关联了issue:[Bug-Report|缺陷反馈]: Relu6D dtype 未由 def 驱动且算子原型缺少重复定义宏保护
atomgit-bot
atomgit-bot
8月13日 评论:

变更摘要

本 PR 主要修复 ops-transfer-test-scan 检查发现的转测准入问题:一是将 Relu6D 从基于 TilingKey 的 dtype 分发改为 def 驱动 dtype,二是通过统一宏保护修复 Relu6D 与 SmoothL1LossGrad 算子原型的重复定义问题。改动涉及 Relu6D 的 tiling、kernel 入口、proto 定义及对应 Host/Kernel 单元测试,并同步更新了公共扩展头。

主要改动

  • Relu6D 改为 def 驱动 dtype:在 relu6_d.cpp 中移除核函数模板参数 D_T_X,入口改为使用 DTYPE_X 直接实例化 KernelRelu6D<DTYPE_X>,使 dtype 由 def 配置驱动。
  • 移除 TilingKey dtype 分发并固定 tiling key:在 relu6_d_tiling_arch35.cpp 中删除 dTypeX 及 ASCENDC_TPL_SEL_PARAM 调用,统一通过 context->SetTilingKey(0) 设置固定 tiling key;同时 relu6_d_tiling_key.h 删除 ASCENDC_TPL_ARGS_DECL、ASCENDC_TPL_SEL 等模板参数声明,不再声明 dtype 维度。
  • 新增算子原型防重复定义宏:在 relu6_d_proto.h 中以 OPS_PROTO_DEF_RELU6D 保护 REG_OP(Relu6D),在 smooth_l1_loss_grad_proto.h 与 op_nn_proto_extend.h 中以 OPS_PROTO_DEF_SMOOTHL1LOSSGRAD 保护 REG_OP(SmoothL1LossGrad),避免多份 proto 合并时重复展开同名定义。
  • 同步更新 Host/Kernel 单元测试:test_relu6_d_tiling.cpp 在 tiling 成功后新增 GetTilingKey() == 0U 断言;test_relu6_d.cpp 移除 ICPU_SET_TILING_KEY(...) 调用及 __RELU6_D_TILING_KEY_H__ 宏定义,使测试逻辑与 def 驱动 dtype 的实现一致。
likedislike
不准确?
atomgit-bot
atomgit-bot
8月13日 评论:

代码审查

✅ 未发现问题

likedislike
不准确?
CANN-robotCANN-robot成员
8月13日 添加了label:cann-cla/yes
CANN-robot
CANN-robot成员
8月13日 评论:

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.
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
*/*/op_graph/*_proto.h ✅ 汤磊, 唐玮玮 (2/2) ✅ 汤磊 (1/1)
*/*/op_graph/*_proto_extend.h ✅ 汤磊, 唐玮玮 (2/2) ✅ 汤磊 (1/1)
activation ✅ 唐玮玮, 王星 (2/2) ✅ 王星 (1/1)

💡 Tip:

  • Committer can comment /approve or /lgtm
  • Commenting /approve implies both code review (lgtm) and intent to merge (approve)

CLA Signature Pass

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

likedislike
CANN-robot
CANN-robot成员
8月13日 评论:

CLA Signature Pass

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

likedislike
CANN-robotCANN-robot成员
8月13日 将zengjuan,chaotang233,kevin_huang1234,crystalhu,yangyang016,fanqirui,renruhai,su-yueming,zhajianqing123,tang-lei01,chenqi317,wang-xing001,liubo75,tangweiwei2,liujie12345678,pingchuantang,Chen_HaoWen,wangyongguang设为评审人
此处折叠了6条事件消息 查看更多
CANN-robotCANN-robot成员
8月13日 添加了label:cann-cla/yes
zhongheng
8月13日 评论:

compile

likedislike
Zzhongheng
8月13日 预合并成功(commit_id: 3905d062e68a355350ff8a31bc16f66de7b3b782)
CANN-robotCANN-robot成员
8月13日 添加了label:ci-pipeline-running
CANN-robot
CANN-robot成员
8月13日 评论:

流水线任务触发成功
任务链接 [026e91feb8604677a5f6b9d5a3ce5fa5][流水线指导]

任务名称状态日志下载链接
Compile_Ascend_X86_ubuntu24 ✅ SUCCESS >>>>> >>>>>
Compile_Ascend_X86_mobile_station ✅ SUCCESS >>>>> >>>>>
Compile_Ascend_ARM ✅ SUCCESS >>>>> >>>>>
Compile_Ascend_single ✅ SUCCESS >>>>> >>>>>
Compile_Ascend_experimental ✅ SUCCESS >>>>> >>>>>
Compile_Ascend_X86_950 ✅ SUCCESS >>>>> >>>>>
Compile_Ascend_ARM_950 ✅ SUCCESS >>>>> >>>>>
Compile_Pre ✅ SUCCESS >>>>>
pre_comment ✅ SUCCESS >>>>>
Compile_Ascend_X86 ✅ SUCCESS >>>>> >>>>>
Compile_Ascend_X86_mobile_station_ubuntu24 ✅ SUCCESS >>>>> >>>>>
Compile_Ascend_X86_950_ubuntu24 ✅ SUCCESS >>>>> >>>>>
Compile_Ascend_ARM_ubuntu24 ✅ SUCCESS >>>>> >>>>>
Compile_Ascend_single_ubuntu24 ✅ SUCCESS >>>>> >>>>>
Compile_Ascend_experimental_ubuntu24 ✅ SUCCESS >>>>> >>>>>
Compile_Ascend_ARM_950_ubuntu24 ✅ SUCCESS >>>>> >>>>>
Compile_X86_monitor_910b ✅ SUCCESS >>>>> >>>>>
Compile_X86_monitor_910c ✅ SUCCESS >>>>> >>>>>
Compile_X86_monitor_950 ✅ SUCCESS >>>>> >>>>>
Compile_classify ✅ SUCCESS >>>>>
Compile_Ascend_X86_mobile_station_9030_ubuntu24 ✅ SUCCESS >>>>> >>>>>
UT_Test_ophost ✅ SUCCESS
UT_Test_opapi ✅ SUCCESS
UT_Test_kernel ✅ SUCCESS
UT_Test_opgraph ✅ SUCCESS
PreSmoke_A900 ✅ SUCCESS >>>>>
API_Check ⚠️ WARNING >>>>>
PreSmoke_ATK_Test_A2 ✅ SUCCESS >>>>>
UT_Test_report_lcov ✅ SUCCESS >>>>>

[2026-08-13 17:12:57]    CI执行结束

likedislike
CANN-robot
CANN-robot成员
8月13日 评论:

流水线任务触发成功
任务链接 [5ed28ff97e8b4bfc9bb394de09bff79a][流水线指导]

任务名称状态日志下载链接
antipoison ✅ SUCCESS >>>>>
codecheck_checkpr ✅ SUCCESS
StaticCheck_codespell ✅ SUCCESS
StaticCheck_link_validity ✅ SUCCESS
StaticCheck_resource_existence ✅ SUCCESS
StaticCheck_tag_closed ✅ SUCCESS
StaticCheck_markdownlint ✅ SUCCESS
codecheck_precommit ✅ SUCCESS >>>>>
SCA ✅ SUCCESS >>>>>

[2026-08-13 16:57:18]    CI执行结束

likedislike
CANN-robotCANN-robot成员
8月13日 添加了label:api-check-failed
CANN-robotCANN-robot成员
8月13日 删除了label:ci-pipeline-running
CANN-robotCANN-robot成员
8月13日 添加了label:ci-pipeline-passed
Zzhongheng
8月14日 修改了pull request 的描述
Zzhongheng
8月14日 修改了pull request 的描述
tang-lei01成员
8月14日 评论:

/approve

likedislike
wang-xing001成员
8月14日 评论:

/lgtm
/approve

likedislike
CANN-robotCANN-robot成员
8月14日 添加了label:approved
zhongheng
8月17日 评论:
likedislike
zhongheng
8月18日 评论:
likedislike
tangweiwei2成员
8月18日 评论:

/lgtm
/approve

likedislike
CANN-robotCANN-robot成员
8月18日 添加了label:lgtm
CANN-robotCANN-robot成员
8月18日 删除了label:ci-pipeline-passed
CANN-robot
CANN-robot成员
8月18日 评论:

The following label is not ready.

ci-pipeline-passed: The ci-pipeline-passed label is expired as added over 72 hours. Please use /compile to recompile.

likedislike
zhongheng
8月18日 评论:

compile

likedislike
Zzhongheng
8月18日 预合并成功(commit_id: 899b4465b27f30c5cf666b0de8ba4c79b63b30a2)
CANN-robotCANN-robot成员
8月18日 删除了label:api-check-failed
CANN-robotCANN-robot成员
8月18日 添加了label:ci-pipeline-running
CANN-robot
CANN-robot成员
8月18日 评论:

流水线任务触发成功
任务链接 [9cb34355e20d4baaa4196fa5ad7ce96c][流水线指导]

任务名称状态日志下载链接
Compile_Ascend_X86_ubuntu24 ✅ SUCCESS >>>>> >>>>>
Compile_Ascend_X86_mobile_station ✅ SUCCESS >>>>> >>>>>
Compile_Ascend_ARM ✅ SUCCESS >>>>> >>>>>
Compile_Ascend_single ✅ SUCCESS >>>>> >>>>>
Compile_Ascend_experimental ✅ SUCCESS >>>>> >>>>>
Compile_Ascend_X86_950 ✅ SUCCESS >>>>> >>>>>
Compile_Ascend_ARM_950 ✅ SUCCESS >>>>> >>>>>
Compile_Pre ✅ SUCCESS >>>>>
pre_comment ✅ SUCCESS >>>>>
Compile_Ascend_X86 ✅ SUCCESS >>>>> >>>>>
Compile_Ascend_X86_mobile_station_ubuntu24 ✅ SUCCESS >>>>> >>>>>
Compile_Ascend_X86_950_ubuntu24 ✅ SUCCESS >>>>> >>>>>
Compile_Ascend_ARM_ubuntu24 ✅ SUCCESS >>>>> >>>>>
Compile_Ascend_single_ubuntu24 ✅ SUCCESS >>>>> >>>>>
Compile_Ascend_experimental_ubuntu24 ✅ SUCCESS >>>>> >>>>>
Compile_Ascend_ARM_950_ubuntu24 ✅ SUCCESS >>>>> >>>>>
Compile_X86_monitor_910b ✅ SUCCESS >>>>> >>>>>
Compile_X86_monitor_910c ✅ SUCCESS >>>>> >>>>>
Compile_X86_monitor_950 ✅ SUCCESS >>>>> >>>>>
Compile_classify ✅ SUCCESS >>>>>
Compile_Ascend_X86_mobile_station_9030_ubuntu24 ✅ SUCCESS >>>>> >>>>>
UT_Test_ophost ✅ SUCCESS
UT_Test_opapi ✅ SUCCESS
UT_Test_kernel ✅ SUCCESS
UT_Test_opgraph ✅ SUCCESS
PreSmoke_A900 ✅ SUCCESS >>>>>
API_Check ⚠️ WARNING >>>>>
PreSmoke_ATK_Test_A2 ✅ SUCCESS >>>>>
UT_Test_report_lcov ✅ SUCCESS >>>>>

[2026-08-18 10:02:49]    CI执行结束

likedislike
CANN-robot
CANN-robot成员
8月18日 评论:

流水线任务触发成功
任务链接 [ed27bc5e8d304b07a07c823715ff44de][流水线指导]

任务名称状态日志下载链接
antipoison ✅ SUCCESS >>>>>
codecheck_checkpr ✅ SUCCESS
StaticCheck_codespell ✅ SUCCESS
StaticCheck_link_validity ✅ SUCCESS
StaticCheck_resource_existence ✅ SUCCESS
StaticCheck_tag_closed ✅ SUCCESS
StaticCheck_markdownlint ✅ SUCCESS
codecheck_precommit ✅ SUCCESS >>>>>
SCA ✅ SUCCESS >>>>>

[2026-08-18 09:49:06]    CI执行结束

likedislike
CANN-robotCANN-robot成员
8月18日 添加了label:api-check-failed
CANN-robotCANN-robot成员
8月18日 删除了label:ci-pipeline-running
CANN-robotCANN-robot成员
8月18日 添加了label:ci-pipeline-passed
CANN-robotCANN-robot成员
8月18日 关闭了关联的issue
CANN-robotCANN-robot成员
8月18日 合入了pull request