已关闭
[AddRmsNormQuant] Host与Kernel层y2输出判断逻辑不一致 #2668
liangyuhua创建于 5月13日关闭于 5月14日
5月13日 将 liangyuhua 设为负责人
liangyuhua
5月13日 评论:
5月13日 评论:
验证更新
修复已完成并通过UT测试验证:
修改内容
- 修改文件:
norm/add_rms_norm_quant/op_host/op_api/add_rms_norm_quant.cpp - 新增测试:
test_aclnn_add_rms_norm_quant.cpp新增测试case
验证结果
✅ 编译成功,无错误无警告
✅ UT测试全部通过(9个测试case)
✅ Host层与Kernel层逻辑一致
✅ 不影响其他芯片版本
UT测试详情
[==========] Running 9 tests from 1 test suite.
[ PASSED ] 9 tests.
新增测试case:
ascend950PR_zeroPoints2_only_no_scales2 - PASS
代码检查
- ✅ 无重复代码
- ✅ 无超大函数
- ✅ 测试case简洁(约23行)
- ✅ 符合codecheck规范
修复已提交至PR #4788,待审核合并。


5月14日 关闭了 issue
5月14日 添加了label:resolved
问题描述
AddRmsNormQuant算子在regbase(950)版本中,Host层和Kernel层对于y2输出的判断逻辑不一致,导致潜在的功能异常。
问题详情
Kernel层实现:
norm/add_rms_norm_quant/op_kernel/arch35/add_rms_norm_quant_regbase_perf.h:31#define HAS_Y2 (HAS_SCALE2 || HAS_ZEROPOINTS2)Host层原有实现:
norm/add_rms_norm_quant/op_host/op_api/add_rms_norm_quant.cpp:31,87bool isDual = (nullptr != scales2Optional);影响场景
当用户传入zeroPoints2参数但不传入scales2参数时:
修复方案
引入芯片版本判断,使regbase版本的Host层逻辑与Kernel层保持一致:
isDual = (scales2 || zeroPoints2)isDual = (scales2)关联PR
修复已提交至PR #4788:https://gitcode.com/cann/ops-nn/merge_requests/4788