已关闭
aclnnBatchMatmulQuant接口未判断quantParam是否为空tensor #5854
liuhanwen8创建于  24 天前关闭于  19 天前
liuhanwen8
liuhanwen8
24 天前 创建

https://gitcode.com/cann/ops-nn/blob/master/matmul/batch_matmul_quant/op_host/op_api/aclnn_batchmatmul_quant.cpp

aclnnBatchMatmulQuant接口未判断quantParam/bias是否为空tensor

if (x1->IsEmpty() || x2->IsEmpty()) {
OP_LOGE(ACLNN_ERR_PARAM_INVALID, "aclnnBatchMatmulQuant do not support empty tensor!");
return ACLNN_ERR_PARAM_INVALID;
}

likedislike
liuhanwen8liuhanwen8
24 天前 修改了issue 的描述
zjl5071
23 天前 评论:

信息来源声明:以下分析基于昇腾知识图谱(ascend.wiki)检索结果与 ops-nn 仓库代码走查。

结论:功能层面该问题不成立——空的 quantParam / bias 输入实际都会被现有校验拦截并返回 ACLNN_ERR_PARAM_INVALID,不会进入算子执行;报告观察到的只是"缺少显式 IsEmpty 检查",但 shape 校验已等价覆盖。 有两点低严重度的改进空间,见文末。

依据(matmul/batch_matmul_quant/op_host/op_api/aclnn_batchmatmul_quant.cpp):

  1. 空 quantParam 会被 shape 校验拒绝。CheckShapeValid 要求 quantParam 必须为 1 维且 dim0 ∈ {1, nAlign16}(nAlign16 = ceil(N/16)×16,N≥1 时 ≥16)。空 quantParam(shape {0})的 dim0=0 两个取值都不满足,直接返回 ACLNN_ERR_PARAM_INVALID,只是报错文案是 "quantParam dim ... not equal to 1 or n align to multiple of 16",没有直说 empty tensor。
  2. 空 bias 同样被拒绝。bias 非空指针时要求 dimNum==1 且 dim0==N;空 bias(shape {0})在 N≥1 时 dim0≠N 即报错。而 bias == nullptr 是代码显式支持的可选输入(dtype/shape 校验均有 nullptr 短路),不属缺陷。
  3. N=0 的边角场景也被兜住:若 x2 最后一维为 0,nAlign16=0 时空 quantParam 确实能通过 shape 校验,但 x2 本身是空 tensor,会在 GetWorkspaceSize 的 x1/x2->IsEmpty() 检查处被拒绝。
  4. 与官方文档一致:README 约束说明明确"不支持空 tensor",当前行为(所有空输入均返回错误码)与文档一致。

两点低严重度改进建议(如后续维护该文件时顺手处理):

  • 报错可读性:可仿照 x1/x2 对 quantParam/bias 增加显式空 tensor 判断,让报错直说 "do not support empty tensor",降低排障成本;
  • 取值顺序:quantParam 在 dimNum 校验之前就调用了 GetDim(0)。若传入 0 维标量 quantParam,gert::Shape::GetDim 在 idx < kMaxDimNum 时会直接返回内部数组未定义值(头文件注释明确"调用者需要保证 index 合法")。虽然此处 dimNum != 1 条件会先行短路报错、未定义值只影响日志内容,但对照 x1/x2 已有 OP_CHECK_MIN_DIM 保护,建议给 quantParam/bias 也前置 OP_CHECK_MIN_DIM(x, 1),或将 GetDim(0) 挪到 dimNum 判断之后。

(昇腾知识图谱接入方式:https://gitcode.com/agent0/kg-tools)

likedislike
yuning_chenyuning_chen成员
23 天前 将 void_ptr 设为负责人
yuning_chen
yuning_chen成员
23 天前 评论:

您好,问题已收到,当前 @void_ptr 正在处理中。

likedislike
liuhanwen8liuhanwen8
19 天前 issue状态由 待办的 改变为 已取消
liuhanwen8liuhanwen8
19 天前 关闭了 issue
liuhanwen8liuhanwen8
19 天前 issue状态由 已取消 改变为 已完成