Closed
[Bug-Report|缺陷反馈]: experimental LogAddExp 的 FP16/BF16 路径对同号无穷大返回 NaN #3472
puppyAdd on  Oct 11Closed at  11 days ago
puppy
puppy
Oct 11 Create

一、问题描述(必填)

experimental/math/log_add_exp/op_kernel/log_add_exp.h 的 FP16/BF16 路径对 (+Inf,+Inf) 和 (-Inf,-Inf) 返回 NaN,预期分别为 +Inf、-Inf。同一源码的 FP32 路径正确处理这两类输入。README 对标 torch.logaddexp,未排除无穷输入。

目标为 master 97624efd0ded6e003512f6dddb094d02e653cb9f 的 experimental/arch22 实现。这里直接编译未修改的上游 kernel,未验证完整自定义算子包的 host/ACLNN 调度,也不代表已安装 CANN 内置算子的行为。

二、环境信息(可选)

Ubuntu aarch64;CANN 9.1.0;driver 26.1.1;ASC/bisheng;Ascend910_9382。一次仅暴露逻辑 device 0,单 AIV block、16 个元素、ubFactor=256。

三、重现步骤(可选)

使用下面附加的源码复现包,包含未修改的 kernel、ASC runner 和实测输出。

source <CANN安装目录>/set_env.sh
cmake -S . -B build
cmake --build build --target logaddexp_probe -j2
ASCEND_RT_VISIBLE_DEVICES=0 ./build/logaddexp_probe fp32_inf
ASCEND_RT_VISIBLE_DEVICES=0 ./build/logaddexp_probe fp16_inf
ASCEND_RT_VISIBLE_DEVICES=0 ./build/logaddexp_probe bf16_inf

FP32 16/16 通过;FP16、BF16 各 4/16 失败,均为同号无穷输入各重复两次。每种 dtype 的 (+Inf,1)、(-Inf,1)、(0,0)、(1,2)、(-2,3)、(3,-2) 对照通过。所有调用同步成功。runner 的退出码 1 表示数值不一致,2 表示 ACL 错误。

四、预期结果(可选)

FP16/BF16 与 FP32 保持相同的同号无穷语义,补充 NaN、异号无穷、有限值和尾块回归。

可能原因:低精度路径提升到 FP32 后计算 Inf-Inf 产生 NaN;FP32 分支已有同号 Inf 选择修正,低精度路径没有对应处理。

已检查相关 13 条 issue、17 条 PR;#2084 是 math/log_add_exp/arch35 的精度问题,与本项 experimental/arch22 缺陷不同。
b963f2f0d60a449ab797a0dc262339e3.zip

likedislike
puppypuppy
Oct 11 Associated pull request
陈思
陈思Collaborators
Oct 11 Comments:

/assign @hanggongmao1

likedislike
CANN-robotCANN-robotCollaborators
Oct 11 Assign hanggongmao1 as responsible person
puppy
puppy
Oct 11 Comments:

修复 PR #6219 已更新到 a43a21fab9c2,当前 CI 流水线 已通过(ci-pipeline-passed),PR 已转为可评审。

CANN 9.1 仓库 CPU kernel UT 12/12,以及 A3 单卡直接使用生产头文件的 NPU harness 13/13 全部通过;已保留同号/异号无穷、NaN、有限值及尾块断言。BF16 CPU Cast 的后端差异已在生产路径修复,相关诊断与精度测试分开记录。未声称完成完整 ACLNN 包调度或全仓回归。

原始验证证据 与范围说明已更新到 PR 主描述。

@songkai111 @llimwang @LiWei79 麻烦按 experimental 模块的要求评审该修复(两人 LGTM、一人 approve);若还需要补充验证,请指出具体场景,谢谢。

likedislike
CANN-robotCANN-robotCollaborators
11 days ago Close issue
CANN-robotCANN-robotCollaborators
11 days ago Added label: resolved