rmsnormquantv2/3 算子在 arch35 实现中复制 gamma、scales、zeroPoints 到 UB 时,使用了对齐后的长度作为 DataCopyPad 的 blockLen。当实际数据元素数 numR 小于对齐长度时,会读取超出 GM 有效数据范围的内存,导致 GM 内存越界。
rmsnormquantv2/3
arch35
gamma
scales
zeroPoints
DataCopyPad
blockLen
numR
昇腾 NPU(arch35 / 910D 等)
rmsnormquantv2
rmsnormquantv3
numQ == 1
DataCopyPad 应按实际数据长度复制:
numR * sizeof(T_X)
numR * sizeof(...)
相关代码路径:
norm/rms_norm_quant_v2/op_kernel/arch35/rms_norm_quant_v2_regbase_full_load.h
norm/rms_norm_quant_v3/op_api/aclnn_rms_norm_quant_v3.cpp
关联 PR:https://gitcode.com/cann/ops-nn/merge_requests/7338
无
/assign @huanghaihong
Describe the current behavior / 问题描述 (Mandatory / 必填)
rmsnormquantv2/3算子在arch35实现中复制gamma、scales、zeroPoints到 UB 时,使用了对齐后的长度作为DataCopyPad的blockLen。当实际数据元素数numR小于对齐长度时,会读取超出 GM 有效数据范围的内存,导致 GM 内存越界。Environment / 环境信息 (Mandatory / 必填)
昇腾 NPU(arch35 / 910D 等)
Steps to reproduce the issue / 重现步骤 (Mandatory / 必填)
rmsnormquantv2或rmsnormquantv3算子;numR较小或numQ == 1的输入场景;Describe the expected behavior / 预期结果 (Mandatory / 必填)
DataCopyPad应按实际数据长度复制:gamma使用numR * sizeof(T_X);scales和zeroPoints在numQ == 1时使用单元素长度,否则使用numR * sizeof(...);不超出 GM 有效数据范围。
Related log / screenshot / 日志 / 截图 (Mandatory / 必填)
相关代码路径:
norm/rms_norm_quant_v2/op_kernel/arch35/rms_norm_quant_v2_regbase_full_load.hnorm/rms_norm_quant_v3/op_api/aclnn_rms_norm_quant_v3.cpp关联 PR:https://gitcode.com/cann/ops-nn/merge_requests/7338
Special notes for this issue/备注 (Optional / 选填)
无