已关闭
fix: 修复 rmsnormquantv2/3 的 GM 内存越界问题 #4027
huanghaihong创建于  7月10日关闭于  7月11日
huanghaihong
7月10日 创建

Describe the current behavior / 问题描述 (Mandatory / 必填)

rmsnormquantv2/3 算子在 arch35 实现中复制 gammascaleszeroPoints 到 UB 时,使用了对齐后的长度作为 DataCopyPadblockLen。当实际数据元素数 numR 小于对齐长度时,会读取超出 GM 有效数据范围的内存,导致 GM 内存越界。

Environment / 环境信息 (Mandatory / 必填)

昇腾 NPU(arch35 / 910D 等)

Steps to reproduce the issue / 重现步骤 (Mandatory / 必填)

  1. 调用 rmsnormquantv2rmsnormquantv3 算子;
  2. 使用 numR 较小或 numQ == 1 的输入场景;
  3. 触发 GM 越界读取。

Describe the expected behavior / 预期结果 (Mandatory / 必填)

DataCopyPad 应按实际数据长度复制:

  • gamma 使用 numR * sizeof(T_X)
  • scaleszeroPointsnumQ == 1 时使用单元素长度,否则使用 numR * sizeof(...)
    不超出 GM 有效数据范围。

相关代码路径:

  • 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

Special notes for this issue/备注 (Optional / 选填)

likedislike
Hhuanghaihong
7月10日 添加了label:bug-report
huanghaihong
7月10日 评论:

/assign @huanghaihong

likedislike
CANN-robotCANN-robot成员
7月10日 将 huanghaihong 设为负责人
CANN-robotCANN-robot成员
7月11日 关闭了 issue
CANN-robotCANN-robot成员
7月11日 添加了label:resolved