已关闭
[Bug-Report|缺陷反馈]: Ascend 950 RmsNormQuant 空 Tensor 未统一拦截 #5772
raoliang_sac创建于  9月10日关闭于  9月11日
raoliang_sac成员
9月10日 创建

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

Ascend 950(RegBase)上的 RmsNormQuant 系列缺少完整、统一的空 Tensor 校验:

  • 公共 aclnnRmsNormQuant 和 aclnnRmsNormQuantV3 仅检查空指针及部分维度关系,shape size 为 0 的 Tensor 仍可能进入预处理或 tiling,导致非法输入未在 API 参数校验阶段返回,错误阶段及错误码与输入语义不一致。
  • RmsNormQuantV2/V3 共用的 RegBase tiling 只在较晚阶段覆盖 x/gamma 的部分空 shape,未统一覆盖已提供的其他输入和有效输出;GEIR 直接调用仍存在漏检。

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

  • 硬件:Ascend 950 / RegBase
  • 代码基线:ops-nn master 7a9a76f61d71d27de1a2895178b24ac20bd896c0
  • 涉及接口/算子:aclnnRmsNormQuant、aclnnRmsNormQuantV3、RmsNormQuantV2、RmsNormQuantV3

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

  1. 在 Ascend 950 环境构造 required/present Tensor 中任一维为 0 的场景,例如 x/y shape 为 (0, 64),其余 shape 满足现有维度关系。
  2. 调用 aclnnRmsNormQuantGetWorkspaceSize 或 aclnnRmsNormQuantV3GetWorkspaceSize;也可通过 GEIR 直接构造 RmsNormQuantV2/V3 空输入或空输出 shape。
  3. 修改前空 Tensor 会越过 API 的参数语义校验,进入预处理或后续 tiling;tiling 的检查时机和覆盖范围不完整,无法稳定返回与非法 shape 一致的参数错误。

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

  • 仅在 Ascend 950/RegBase 上,所有必选 Tensor 和已提供的可选 Tensor 均应在计算前拒绝空 shape,并返回明确的参数/shape 非法错误。
  • V3 的 rstd 仅在 outputRstd=true 时要求非空;关闭该输出时允许空指针或空 Tensor 占位。
  • A2/A3 等非 RegBase 平台保持历史行为不变。
  • ACLNN 与 GEIR 直接调用具有一致的空 Tensor 契约。

修复后新增 ACLNN 与共享 tiling UT,逐一覆盖输入/输出空 shape;Ascend 950 打包成功,刷包后空 Tensor 定向调用返回 161002 (ACLNN_ERR_PARAM_INVALID),未进入 kernel。

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

公共 aclnnRmsNormQuant 在 Ascend 950 内部路由到 RmsNormQuantV2;V2/V3 共用 RegBase tiling,因此需同时修复 API 入口和共享 tiling 入口。

关联 PR:https://gitcode.com/cann/ops-nn/pull/10240

likedislike
Rraoliang_sac成员
9月10日 添加了label:bug-report
raoliang_sac成员
9月10日 评论:

/assign @raoliang_sac

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