已合并
fix(softsign):修复精度问题,修复空tensor问题 #8479
yulianjie创建于 24 天前
fix(softsign):修复精度问题,修复空tensor问题 #8479
已合并
yulianjie创建于 24 天前
yulianjie成员
24 天前

描述

修复 Ascend950 Softsign 的低精度计算和空 Tensor kernel 直调问题,使实现逻辑与 TensorFlow tf.nn.softsign 对齐。

问题原因

  1. 原 FP16/BF16 路径将输入提升到 FP32 后,在 FP32 中完成 abs(x) + 1 和除法,直到最终输出才回落到原 dtype,缺少 TensorFlow 低精度路径中的中间舍入。
  2. 空 Tensor 的 blockNum 为 0,但 Kernel 仍进入 ElementwiseSch,导致无有效任务时停留在动态性能采集阶段。

修改内容

  • 新增 GraphSoftsignLowPrecision:FP16/BF16 在 abs(x) + 1 后显式窄化回输入 dtype,再拓宽进行除法,保留 TensorFlow 对应的舍入点。
  • 新增 GraphSoftsignByDtype:FP32 继续使用原计算图,FP16/BF16 使用低精度对齐计算图。
  • Host Tiling 与 Kernel 统一通过 dtype 选择相同 DAG,保证 Tiling 资源估算和 Kernel 执行图一致。
  • Kernel 在 tilingData.baseTiling.blockNum == 0 时直接返回,避免空 Tensor 进入 Elementwise 调度。

本 PR 共修改 3 个文件,新增 44 行、删除 8 行;FP32 计算路径保持不变。

关联的Issue

关联 Issue #4673

测试

  • 构建验证:
    • bash build.sh --ops=softsign --soc=ascend950 --opkernel -j8
    • bash build.sh --ops=softsign --soc=ascend950 --pkg -j8
  • TTK kernel 直调,Golden 实际调用 TensorFlow 2.16.1 tf.nn.softsign;BF16 直接使用 tf.bfloat16 计算。
  • 正式 500 条用例采用严格 --compare close:500/500 PASS,无失败、无跳过。
    • FP32:167/167 PASS
    • FP16:167/167 PASS
    • BF16:166/166 PASS
    • 精度、内存越界和性能状态均为 500/500 PASS,逐元素精度均为 100%。
  • 标量专项:FP32/FP16/BF16 3/3 PASS。
  • 真空 Tensor (0,) 专项:FP32/FP16/BF16 3/3 PASS,输出 shape/dtype 保持不变,kernel 正常结束。

文档更新

  • 更新 softsign_dag.h 中 FP16/BF16 数据流和 TensorFlow 舍入语义说明。
  • 无用户接口或公开 API 文档变更。

类型标签

AI/Agent生成声明

likedislike
Pull Request已成功合入, 合并人@CANN-robot
(感谢 yulianjie 的贡献)
Yyulianjie成员
24 天前 创建了 pull request,commit 7b6cdb43
atomgit-bot
atomgit-bot
24 天前 评论:

变更摘要

此 PR 主要修复 softsign 算子在低精度(FP16/BF16)下的数值精度问题,并增加空 tensor 的防护。精度修复的核心是将 (abs(x) + 1) 的计算结果先显式窄化到原始低精度 dtype,再拓宽回 FP32 做除法,以对齐 TensorFlow 的原 dtype 计算语义。同时引入 GraphSoftsignByDtypeGraphSoftsignLowPrecision 模板结构,按 dtype 分派不同的 DAG 计算流程,并替换了 tiling 层和 kernel 层中的模板参数引用。此外在 kernel 入口处增加了 blockNum == 0 的提前返回,避免空 tensor 场景下的异常。

主要改动

  • 低精度分母精度修复:在 softsign_dag.h 中新增 GraphSoftsignLowPrecision 模板,在 Abs → Adds(+1) 之后插入 CastDenomOut(FP32→原 dtype)和 CastDenomIn(原 dtype→FP32),使分母 (abs(x)+1) 先舍入到原低精度再参与除法,对齐 TensorFlow 语义
  • Dtype 分发重构:新增 GraphSoftsignByDtype 模板(对 float 做特化沿用原有 GraphSoftsign 路径,其余类型走 GraphSoftsignLowPrecision),并将 tiling 层 softsign_tiling_arch35.cpp 和 kernel 层 softsign.cpp 中的模板参数从 GraphSoftsign<InputT, float> 替换为 GraphSoftsignByDtype<InputT>
  • 空 tensor 防护:在 softsign.cpp 的 kernel 函数中增加 tilingData.baseTiling.blockNum == 0 判断,为空 tensor 场景提前 return,避免后续调度异常
likedislike
atomgit-bot
atomgit-bot
24 天前 评论:

代码审查

✅ 未发现问题

likedislike
CANN-robotCANN-robot成员
24 天前 添加了label:cann-cla/yes
CANN-robot
CANN-robot成员
24 天前 评论:

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


PR Approval Progress

Congratulations! All modules have met the lgtm and approve requirements.

Module Approval Details

module lgtm status approve status
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

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

likedislike
CANN-robotCANN-robot成员
24 天前 将zengjuan,chaotang233,kevin_huang1234,crystalhu,yangyang016,fanqirui,renruhai,su-yueming,zhajianqing123,chenqi317,wang-xing001,liubo75,tangweiwei2,liujie12345678,pingchuantang,Chen_HaoWen设为评审人
CANN-robotCANN-robot成员
24 天前 将kevin_huang1234,renruhai,su-yueming,zhajianqing123,wang-xing001,liujie12345678,pingchuantang,Chen_HaoWen设为审查人
Yyulianjie成员
24 天前 修改了pull request 的描述
Yyulianjie成员
24 天前 修改了pull request 的描述
yulianjie成员
24 天前 评论:

compile

likedislike
Yyulianjie成员
24 天前 update merge request[project id: 7665709, iid: 8479, commit_id: 81bd75188e509a09ed1c4b145abe9a828482a6a6] virtual merging success
CANN-robotCANN-robot成员
24 天前 添加了label:ci-pipeline-running
CANN-robot
CANN-robot成员
24 天前 评论:

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

任务名称状态日志下载链接
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 ✅ SUCCESS >>>>>
PreSmoke_ATK_Test_A2 ✅ SUCCESS >>>>>
UT_Test_harmony-infer-chs-nn ✅ SUCCESS
UT_Test_harmony-infer-chs-nn-1 ✅ SUCCESS
UT_Test_harmony-infer-cpro-nn ✅ SUCCESS
UT_Test_report_lcov ✅ SUCCESS >>>>>

[2026-08-10 16:39:38]    CI执行结束

likedislike
CANN-robot
CANN-robot成员
24 天前 评论:

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

任务名称状态日志下载链接
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-10 16:25:29]    CI执行结束

likedislike
CANN-robotCANN-robot成员
24 天前 添加了label:api-check-pass
CANN-robotCANN-robot成员
24 天前 删除了label:ci-pipeline-running
CANN-robotCANN-robot成员
24 天前 添加了label:ci-pipeline-passed
lileizheng成员
24 天前 评论:

/reject

likedislike
conv2d_ci
24 天前 评论:
pipeline history
TimeNameResultChangeidTimeStamp
2026-08-10 16:52:08Start_PipelineMR_389
likedislike
conv2d_ci
24 天前 评论:
pipeline history
TimeNameResultChangeidTimeStamp
2026-08-10 16:54:58Sync_PR :white_check_mark: 成功I2e53a687aafe3704f909e585c9a606d72b8e693c
likedislike
conv2d_ci
24 天前 评论:
pipeline history
TimeNameResultChangeidTimeStamp
2026-08-10 16:55:20Trigger_SC :white_check_mark: 触发成功I2e53a687aafe3704f909e585c9a606d72b8e693c20260810_165953776
likedislike
conv2d_ci
24 天前 评论:
pipeline history
TimeNameResultChangeidTimeStamp
2026-08-10 17:21:48SC_Result :x: 失败I2e53a687aafe3704f909e585c9a606d72b8e693c
likedislike
conv2d_ci
24 天前 评论:
pipeline history
TimeNameResultChangeidTimeStamp
2026-08-10 17:23:15CMETRICS :white_check_mark: 成功I2e53a687aafe3704f909e585c9a606d72b8e693c
likedislike
conv2d_ci
24 天前 评论:
pipeline history
TimeNameResultChangeidTimeStamp
2026-08-10 17:23:37Trigger_RDV :white_check_mark: 触发成功I2e53a687aafe3704f909e585c9a606d72b8e693c20260810_172810601
likedislike
tangweiwei2成员
24 天前 评论:

/lgtm

likedislike
yulianjie成员
24 天前 评论:

compile

likedislike
Yyulianjie成员
24 天前 update merge request[project id: 7665709, iid: 8479, commit_id: 786e73031ee2d157260c7860a16844cec70fd070] virtual merging success
CANN-robotCANN-robot成员
24 天前 删除了label:ci-pipeline-passedapi-check-pass
CANN-robotCANN-robot成员
24 天前 添加了label:ci-pipeline-running
CANN-robot
CANN-robot成员
24 天前 评论:

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

任务名称状态日志下载链接
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 ✅ SUCCESS >>>>>
PreSmoke_ATK_Test_A2 ✅ SUCCESS >>>>>
UT_Test_harmony-infer-chs-nn ✅ SUCCESS
UT_Test_harmony-infer-chs-nn-1 ✅ SUCCESS
UT_Test_harmony-infer-cpro-nn ✅ SUCCESS
UT_Test_report_lcov ✅ SUCCESS >>>>>

[2026-08-11 15:37:26]    CI执行结束

likedislike
CANN-robot
CANN-robot成员
24 天前 评论:

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

任务名称状态日志下载链接
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-11 15:19:01]    CI执行结束

likedislike
CANN-robotCANN-robot成员
24 天前 添加了label:api-check-pass
CANN-robotCANN-robot成员
24 天前 删除了label:ci-pipeline-running
CANN-robotCANN-robot成员
24 天前 添加了label:ci-pipeline-passed
conv2d_ci
23 天前 评论:
pipeline history
TimeNameResultChangeidTimeStamp
2026-08-11 17:24:07commit2026-08-10T15:38:28+08:00b967b529
SC_Result :x: FAILUREI2e53a68
RDV_Result :x: RUNNINGI2e53a68
本次未执行的rdv任务为
序号任务名未执行理由
1tbe该组的RDV疑似不需要运行:[1951DC, 1951MDC, rdv_tbe_1971_01, rdv_tbe_1981_01, rdv_tbe_1951dc_01, Smoke_1951lite, Smoke_1911mdc, rdv_tbe_1971_02, rdv_tbe_1911rc_01, rdv_tbe_1911ep_01, Smoke_davinci_rdv_Nano, Smoke_nanoc11, rdv_tbe_1952_01]
2David该组的RDV疑似不需要运行:[rdv_tbe_david_01, rdv_tbe_david_02, rdv_tbe_david_03]
3transpose该组的RDV疑似不需要运行:[Davinci_RDV_conv_back_V121, conv_backward_1982_rdv, conv_backward_1971_rdv, conv_transpose_1952_rdv]
likedislike
wang-xing001成员
23 天前 评论:

/lgtm
/approve

likedislike
CANN-robotCANN-robot成员
23 天前 添加了label:lgtmapproved
CANN-robotCANN-robot成员
23 天前 关闭了关联的issue
CANN-robotCANN-robot成员
23 天前 合入了pull request