| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
fix(softsign):修复精度问题,修复空tensor问题 Co-authored-by: lianjieyu<yulianjie@huawei.com> # message auto-generated for no-merge-commit merge: !8479 merge fix_softsign into master fix(softsign):修复精度问题,修复空tensor问题 Created-by: lianjieyu Commit-by: lianjieyu Merged-by: cann-robot Description: ## 描述 修复 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](https://gitcode.com/cann/ops-nn/issues/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 文档变更。 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!8479 | 22 天前 | |
fix(softsign):修复精度问题,修复空tensor问题 Co-authored-by: lianjieyu<yulianjie@huawei.com> # message auto-generated for no-merge-commit merge: !8479 merge fix_softsign into master fix(softsign):修复精度问题,修复空tensor问题 Created-by: lianjieyu Commit-by: lianjieyu Merged-by: cann-robot Description: ## 描述 修复 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](https://gitcode.com/cann/ops-nn/issues/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 文档变更。 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!8479 | 22 天前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 22 天前 | ||
| 22 天前 |