已关闭
[Bug-Report|缺陷反馈]: aclnnQuantBatchMatmulInplaceAdd 空 Tensor 行为与文档不一致,m=0/n=0 快速返回分支不可达 #4145
chenjiayi_创建于 7月17日关闭于 8月14日
7月17日 issue类型由 任务 改变为 缺陷
7月17日 将 chen-shuai 设为负责人
yuning_chen
7月17日 评论:
7月17日 评论:
您好,感谢反馈,问题已收到,当前 @chen-shuai 正在跟踪处理。


chen-shuai
7月20日 评论:
7月20日 评论:
您好,正在了解问题


chen-shuai
8月6日 评论:
8月6日 评论:
正在分析问题


chen-shuai
8月13日 评论:
8月13日 评论:
编码完成,正在测试验证


8月14日 关闭了 issue
8月14日 添加了label:resolved
Thanks for sending an issue! Please fill in the following template to help quickly solve your problem.
Describe the current behavior / 问题描述 (Mandatory / 必填)
aclnnQuantBatchMatmulInplaceAdd对m=0或n=0空 Tensor 的接口行为与文档不一致,并且代码中已有的空 Tensor 快速返回分支实际不可达。接口文档在
docs/aclnnQuantBatchMatmulInplaceAdd.md中说明:但当前实现的调用顺序为:
aclnnQuantBatchMatmulInplaceAddGetWorkspaceSizeCommon()先调用InferGroupSize();CheckParams();CheckParams()调用CheckShape();CheckShape()调用CheckMKN();CheckMKN()对m <= 0和n <= 0直接返回失败;inputSizeM == 0 || inputSizeN == 0并返回ACLNN_SUCCESS。因此:
CheckMKN()中返回ACLNN_ERR_PARAM_INVALID;InferGroupSize()的ReCalcGroupSize()中,因为空维对应的 scaleSize 为 0 而返回失败;aclnnQuantBatchMatmulInplaceAddGetWorkspaceSizeCommon()中现有的空 Tensor 成功分支无法处理文档描述的输入。另外,文档错误码表又将 x1、x2、x2Scale、yRef 为空 Tensor 列为
ACLNN_ERR_PARAM_INVALID,与同一文档前文的空 Tensor 支持说明也存在矛盾。相关位置:
docs/aclnnQuantBatchMatmulInplaceAdd.md:139CheckMKN()拒绝 m/n 为 0:op_api/aclnn_quant_batch_matmul_inplace_add.cpp:186-203CheckShape()调用CheckMKN():op_api/aclnn_quant_batch_matmul_inplace_add.cpp:381-400CheckParams()调用CheckShape():op_api/aclnn_quant_batch_matmul_inplace_add.cpp:561-569op_api/aclnn_quant_batch_matmul_inplace_add.cpp:691-733Environment / 环境信息 (Mandatory / 必填)
cann/ops-nnmastercac808cda9259bef337d9c2aca93f017d6251f8bSteps to reproduce the issue / 重现步骤 (Mandatory / 必填)
以文档支持的 HIFLOAT8 T-T 场景为例:
[512, 0][512, 256][1][1][0, 256]truefalse0aclnnQuantBatchMatmulInplaceAddGetWorkspaceSize()。CheckParams()→CheckShape()→CheckMKN()。CheckMKN()因m <= 0返回失败,第一段接口最终返回ACLNN_ERR_PARAM_INVALID(161002)。n=0可使用以下输入验证:[512, 128][512, 0][128, 0]MX 场景也存在相同问题,并可能在
InferGroupSize()阶段更早失败。Describe the expected behavior / 预期结果 (Mandatory / 必填)
应统一文档和实现对空 Tensor 的行为定义。
按照当前文档描述以及代码中已经存在的空 Tensor 快速返回分支,建议:
m=0或n=0;InferGroupSize()、CheckMKN()等会拒绝零维的校验之前返回ACLNN_SUCCESS;k=0为非法输入;m=0、n=0API 单元测试。如果接口设计实际上不支持空 Tensor,则应删除不可达的快速返回代码,并修正文档第 139 行的支持说明。
Related log / screenshot / 日志 / 截图 (Mandatory / 必填)
源码调用链:
Special notes for this issue/备注 (Optional / 选填)