Open
[Bug-Report|缺陷反馈]: 校验aclnnInplaceRandomTensor/aclnnInplaceUniformTensor接口对seed/offset参数超过八维的异常情况 #4653
surezzAdd on  5 days ago
surezz
surezzCollaborators
5 days ago Create

一、问题描述 (必填)

校验aclnnInplaceRandomTensor/aclnnInplaceUniformTensor接口对seed/offset参数超过八维的异常情况

二、环境信息 (可选)

三、重现步骤 (可选)

当aclnnInplaceRandomTensor/aclnnInplaceUniformTensor接口对seed/offset参数超过八维时,aclnn正常运行,但实际上需要拦截异常输入

四、预期结果 (可选)

aclnnInplaceRandomTensor/aclnnInplaceUniformTensor接口对seed/offset参数超过八维时,期望错误码161002,期望错误名ACLNN_ERR_PARAM_INVALID

💡 备注(选填)

likedislike
surezzsurezzCollaborators
5 days ago Added label: bug-report
陈思
陈思Collaborators
5 days ago Comments:

您好,感谢反馈!

问题分析

本次读取的 cann/ops-math@212ce9d5460b1be26cfbee481aff1acbf5cc5c62 中,Random Tensor 接口实现的 CheckShape 检查对象是 selfRef;Uniform Tensor 接口实现也只对 selfRef 做最大维数检查。seedTensor、offsetTensor 在相关路径中的类型校验,并未在这两个 API 入口形成对应的显式秩检查,因此 selfRef 合法并不代表这两个输入的形状也已校验。

还需要区分参数约束:aclnnInplaceRandomTensor 资料和 aclnnInplaceUniformTensor 资料的参数表均把 seedTensor、offsetTensor 的维数标为 1,而错误码表中“shape 超过 8 维”的条款针对 selfRef。按该版本资料,九维 seed/offset 已超出其声明范围;处理时应分别对齐这两个参数的真实契约,不能仅套用 selfRef 的八维上限。具体下游路径还随硬件和随机模式变化,您所用版本的实际返回行为仍需对齐用例确认。

处理方向

一个可行方向是在 Tensor 接口入口统一校验 seedTensor、offsetTensor 的形状约束,使非法输入在 GetWorkspaceSize 阶段返回 161002 / ACLNN_ERR_PARAM_INVALID;同时核对空 selfRef 早退路径的检查顺序,保留合法输入及不同后端已有的类型约束。可以分别用仅 seed 超维、仅 offset 超维、二者均超维和合法一维输入做对照。

请补充实际 CANN 版本和芯片型号、selfRef/seedTensor/offsetTensor 的完整 shape 与 dtype,以及一份最小调用片段和两阶段返回码,便于把您观察到的正常运行路径与上述入口对应起来。当前问题先由 chensi79 接单,继续确认参数校验边界。

likedislike
陈思陈思Collaborators
5 days ago Assign chensi79 as responsible person
陈思陈思Collaborators
5 days ago Added label: pending-confirmation
MetastarxMetastarx
5 days ago Associated pull request
陈思陈思Collaborators
5 days ago Assign surezz as responsible person
陈思陈思Collaborators
5 days ago Removed responsible person chensi79
陈思陈思Collaborators
5 days ago Removed label: pending-confirmation