新闻详情

新闻详情

首页 / 资讯中心 / 详情

CANN opbase 算子错误码 EZ0005(Invalid_Input_ShapeSize)排查指南:输入张量形状大小校验失败

发布时间:2026/9/19 15:03:45来源:尧图网络
CANN opbase 算子错误码 EZ0005(Invalid_Input_ShapeSize)排查指南:输入张量形状大小校验失败
CANN opbase 算子错误码 EZ0005Invalid_Input_ShapeSize排查指南输入张量形状大小校验失败【免费下载链接】opbase本项目是CANN算子库的基础框架库为算子提供公共依赖文件和基础调度能力。项目地址: https://gitcode.com/cann/opbaseEZ0005 是 CANN opbase 算子库中用于标记算子输入张量形状大小shape size即总元素数与预期不符的标准错误码。本文将以 EZ0005 英文文档 为主体结合 opbase 仓库中的错误码定义、日志上报宏与错误码注册表源码完整解析该错误码的报错格式、触发时机、底层实现与排查方法帮助算子开发者在实现 shape 校验逻辑时准确上报、快速定位并修复此类错误。一、EZ0005 在算子错误码体系中的位置在 CANN opbase 仓库中算子相关的预定义错误码统一归类于 Operator Errors 错误类索引文档见 Operator-Errors.md。EZ0005 在该体系中表示Invalid_Input_ShapeSize专门用于描述算子输入张量input tensor形状大小校验失败的情形。它与相邻错误码的分工非常明确EZ0001Invalid_Input_Shape输入张量的 shape 本身各维度取值错误EZ0005Invalid_Input_ShapeSize输入张量的 shape size即GetShapeSize()返回的总元素数错误EZ0014 / EZ0015 / EZ0016面向**参数Parameter**而非输入张量的形状大小错误例如算子属性参数、输出参数等。也就是说EZ0005 关注的是这个输入张量里一共应该有多少个元素而不是每个维度具体是多少。两者在排查思路上有本质区别详见本文第五节。二、错误信息格式解析依据 EZ0005 官方文档当算子输入张量的形状大小校验失败时日志与错误上报会输出如下固定格式的信息The %sth input of %s has incorrect shape size %s. It should be %s.其中四个%s占位符的含义依次为占位符含义示例值第 1 个%s与前缀th组合输入张量在算子输入列表中的序号index1第 2 个%s算子名称或 aclnn 接口名称entityNameConv2D第 3 个%s错误的形状大小实际值总元素数3第 4 个%s正确的形状大小预期值总元素数4官方给出的报错示例为The 1th input of Conv2D has incorrect shape size 3. It should be 4.这条信息直译为Conv2D 算子的第 1 个输入其形状大小实际为 3总元素数但预期应为 4。注意这里的1th是消息模板的固定书写形式占位符与前缀拼接的结果并不代表英文序数词的规范写法序号从 0 开始计数时第一条输入对应 0th。三、源码级解析EZ0005 错误码的完整链路从仓库源码可以完整还原 EZ0005 从枚举定义 → 消息模板注册 → 日志宏上报的整条链路。3.1 错误码枚举定义在 include/op_common/log/error_code.h 中ViewErrorCode枚举将 EZ0005 对应的数值常量定义为INVALID_SHAPE_SIZE 70010enum ViewErrorCode { ... INVALID_SHAPE 70009, INVALID_SHAPE_SIZE 70010, // EZ0005 对应的数值错误码 INVALID_SHAPE_DIM 70011, ... };从枚举布局可以看出70000~70018 区间集中定义了算子 shape 与 dtype 相关的校验错误码如INVALID_INPUT_FORMAT 70002、INVALID_INPUT_DTYPE 70003、INVALID_SHAPE_DIM 70011等EZ0005 归属于这一系列底层校验错误体系。3.2 错误码注册表消息模板与建议在 src/op_common/log/log.cpp 的错误码注册表中EZ0005 条目被完整登记{ errClass: Operator Errors, errTitle: Invalid_Input_ShapeSize, ErrCode: EZ0005, ErrMessage: The %sth input of %s has incorrect shape size %s. It should be %s., Arglist: index, op_name, incorrect_size, correct_size, suggestion: { Possible Cause: N/A, Solution: Check whether the shape of the input tensor is correct. } }该注册表是 EZ0005 错误码的唯一事实来源ErrMessage定义了最终对外呈现的消息模板Arglist声明了四个参数index、op_name、incorrect_size、correct_size的填入顺序suggestion则给出官方建议的排查方向——检查输入 tensor 的 shape 是否正确。3.3 上报宏的实现原理算子侧通过日志宏OP_LOGE_WITH_INVALID_INPUT_SHAPESIZE上报 EZ0005 错误其宏定义位于 include/op_common/log/log.h#define OP_LOGE_WITH_INVALID_INPUT_SHAPESIZE(entityName, index, incorrectSize, correctSize) \ do { \ std::string _safe_entityName_(entityName); \ std::string _safe_incorrectSize_(incorrectSize); \ std::string _safe_correctSize_(correctSize); \ std::string index_str std::to_string(index); \ OP_LOGE_LIBOPAPI_REPORT( \ _safe_entityName_.c_str(), The %sth input of %s has incorrect shape size %s. It should be %s., \ index_str.c_str(), _safe_entityName_.c_str(), _safe_incorrectSize_.c_str(), _safe_correctSize_.c_str()); \ const std::vectorconst char* msgKey {index, op_name, incorrect_size, correct_size}; \ const std::vectorconst char* msgvalue {index_str.c_str(), _safe_entityName_.c_str(), \ _safe_incorrectSize_.c_str(), _safe_correctSize_.c_str()}; \ REPORT_PREDEFINED_ERR_MSG(EZ0005, msgKey, msgvalue); \ } while (0)从宏实现可以看到两层关键行为日志输出通过OP_LOGE_LIBOPAPI_REPORT以 ERROR 级别打印格式化消息占位符依次填入index_str由 int 型 index 经std::to_string转换、entityName、incorrectSize、correctSize错误码上报通过REPORT_PREDEFINED_ERR_MSG(EZ0005, msgKey, msgvalue)将结构化键值对msgKey 与 msgvalue 一一对应上报给上层错误处理框架其中incorrectSize/correctSize实际传入的是字符串调用方通常用std::to_string(xShape.GetShapeSize())转换。因此最终呈现给用户的完整信息 注册表中的ErrMessage模板 调用宏时传入的四个实参与本文第二节展示的报错格式完全一致。四、算子侧上报示例可运行思路结合 OP_LOGE_WITH_INVALID_INPUT_SHAPESIZE 接口文档该宏的完整参数说明如下参数输入/输出类型说明entityName输入const char* / std::string算子名称或 aclnn 接口名称index输入int输入张量索引从 0 开始incorrectSize输入const char* / std::string实际形状大小总元素数correctSize输入const char* / std::string预期形状大小总元素数一个典型的校验与上报代码模式如下示例仅供理解不可直接拷贝运行// 预期输出: The 0th input of MyOp has incorrect shape size 1024. It should be 2048. if (xShape.GetShapeSize() ! 2048) { OP_LOGE_WITH_INVALID_INPUT_SHAPESIZE(MyOp, 0, std::to_string(xShape.GetShapeSize()), 2048); return false; }在这个模式中需要注意几点工程细节index 从 0 开始第 0 个输入上报时消息呈现为 The 0th input...incorrectSize 必须是字符串shape size 通常是数值类型需用std::to_string()转换而不能直接传入 int否则宏内对std::string的初始化会编译失败correctSize 建议书写为带引号的字符串字面量它只是消息展示文本因此既可以写2048也可以写类似 0的约束描述后者用于表达应大于 0这类无法用单个数值表达的条件参见 EZ0014 文档中的group_index示例。补充说明中文接口文档标注OP_LOGE_WITH_INVALID_INPUT_SHAPESIZE已废弃建议改用OP_LOGE_FOR_INVALID_SHAPESIZE参见 OP_LOGE_FOR_INVALID_SHAPESIZE 文档对应 EZ0014 参数形状大小错误。不过从 log.h 的当前实现看该宏仍然保留且能够正确上报 EZ0005迁移时请结合算子实际语义选择面向输入张量的总元素数校验使用 EZ0005 体系面向参数的校验使用 EZ0014 体系二者不要混用。五、排查与解决步骤官方文档给出的解决方向是检查输入 tensor 的 shape 是否正确对应注册表中 Check whether the shape of the input tensor is correct.。结合 EZ0005 的语义推荐按以下步骤系统排查确认报错输入序号定位消息中第 1 个字段如1th确定是算子的第几个输入回到算子定义proto / infershape 实现核对该输入声明的约束核对总元素数的计算EZ0005 校验的是GetShapeSize()各维度乘积例如形状[2, 3, 4]的 shape size 为 24。若报错值恰好是维度数或某一维大小说明校验写错了对象——此时应该分别改用 EZ0011shape dim 错误或 EZ0001/EZ0008shape 错误对照预期值将实际 shape size 与算子规格中声明的预期值如固定大小、 0、与另一输入相等逐一比对检查上游构图/数据预处理是否传入了尺寸不符的张量区分输入与参数确认报错对象是输入张量EZ0005还是参数EZ0014/EZ0015/EZ0016避免按错误的方向排查。官方在 EZ0016 文档中给出了多参数场景的示例如 Parameters query, key, cos and sin of ApplyRotaryPosEmb have incorrect shape sizes...可与单输入场景的 EZ0005 消息形态区分验证修复修正张量形状或调整算子输入后重跑确认 ERROR 日志消失。算子开发者在实现校验时也应在返回失败前通过OP_LOGE_WITH_INVALID_INPUT_SHAPESIZE上报 EZ0005使上层框架与用户获得一致、可检索的错误信息。六、与相邻错误码的区分对照为避免排查方向混淆将 EZ0005 与最容易混淆的相邻错误码整理如下均以 Operator-Errors 索引 及对应文档为准错误码错误标题校验对象消息形态示例EZ0001Invalid_Input_Shape输入张量的 shape维度值The %sth input of %s has incorrect shape [%s]. It should be [%s].EZ0005Invalid_Input_ShapeSize输入张量的 shape size总元素数The %sth input of %s has incorrect shape size %s. It should be %s.EZ0008Invalid_Argument_Tensor_Shape参数含输入/输出的 shapeParameter %s of %s has incorrect shape [%s]. It should be [%s].EZ0014Invalid_Argument_Tensor_Shape_Size单个参数的 shape sizeParameter %s of %s has incorrect shape size %s. It should be %s.EZ0015Invalid_Argument_Tensor_Shape_Size单个参数带失败原因Parameter %s of %s has incorrect shape size %s. Reason: %s.EZ0016Invalid_Argument_Tensor_Shape_Size多个参数带失败原因Parameters %s of %s have incorrect shape sizes %s. Reason: %s.判断口诀EZ0005 的报错文本以 The ... input of ... 开头其余 shape size 类错误以 Parameter ... 开头。看到前者的消息即定位到本篇文章的排查路径。七、总结EZ0005Invalid_Input_ShapeSize是 CANN opbase 中面向**算子输入张量形状大小总元素数**校验失败的标准化错误码。本文从 官方英文文档 出发结合 error_code.h 的枚举定义、log.cpp 的错误码注册表与 log.h 的上报宏实现完整还原了该错误码的生成链路并给出了算子侧上报示例与系统化排查步骤。开发者只需抓住消息中输入序号、算子名、实际大小、预期大小四个要素即可快速定位是输入构图错误还是校验实现错误。如需深入了解整套算子错误码体系与日志接口可继续阅读 Operator-Errors 文档索引 与 op_common 日志接口文档。【免费下载链接】opbase本项目是CANN算子库的基础框架库为算子提供公共依赖文件和基础调度能力。项目地址: https://gitcode.com/cann/opbase创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

如何在单机上用 Docker 快速跑通 AzerothCore-WoTLK 魔兽世界服务器 2026/9/19 15:54:54

如何在单机上用 Docker 快速跑通 AzerothCore-WoTLK 魔兽世界服务器

如何在单机上用 Docker 快速跑通 AzerothCore-WoTLK 魔兽世界服务器 【免费下载链接】azerothcore-wotlk Complete Open Source and Modular solution for MMO 项目地址: https://gitcode.com/GitHub_Trending/az/azerothcore-wotlk AzerothCore-WoTLK 是一套开源、模块…

阅读更多 →
基于Hadoop的智慧社区内网平台:从数据采集到可视化大屏 2026/9/19 15:54:54

基于Hadoop的智慧社区内网平台:从数据采集到可视化大屏

简介:这份资源是一篇基于Hadoop、Python与数据可视化技术构建智慧社区内网平台的毕业论文,面向计算机相关专业学生及需要完成类似课题的开发人员,帮助解决社区管理信息化与智能化设计中的选题、架构与实现难题。压缩包内仅含1个docx文档&…

阅读更多 →
TypeSpec 2024 年 1 月版本发布说明:命名模板参数、@encodedName 与编译器生态更新 2026/9/19 15:54:54

TypeSpec 2024 年 1 月版本发布说明:命名模板参数、@encodedName 与编译器生态更新

TypeSpec 2024 年 1 月版本发布说明:命名模板参数、encodedName 与编译器生态更新 【免费下载链接】typespec 项目地址: https://gitcode.com/GitHub_Trending/ty/typespec 本文是 TypeSpec 仓库 website/src/content/docs/release-notes/release-2024-01-23…

阅读更多 →
Linux下从零编写libdrm显示程序:DRM核心概念与实战 2026/9/19 15:54:54

Linux下从零编写libdrm显示程序:DRM核心概念与实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
OHIF 3.10 UI 迁移指南:从 `@ohif/ui` 的 SwitchButton 到 `@ohif/ui-next` 的 Switch 组件 2026/9/19 15:54:54

OHIF 3.10 UI 迁移指南:从 `@ohif/ui` 的 SwitchButton 到 `@ohif/ui-next` 的 Switch 组件

医疗健康前端音视频 【免费下载链接】Viewers OHIF zero-footprint DICOM viewer and oncology specific Lesion Tracker, plus shared extension packages 项目地址: https://gitcode.com/GitHub_Trending/vi/Viewers 点击查看 免费下载 OHIF Viewer 在 3.10 版本…

阅读更多 →
Vue 3深度实战:从响应式原理到性能优化 2026/9/19 15:51:54

Vue 3深度实战:从响应式原理到性能优化

1. 从一个高频痛点说起:为什么大家都在用Vue先聊个挺反直觉的现象:我见过不少学过Java、C这种强类型语言的开发朋友,第一次接触Vue的时候,第一反应普遍是"这玩意儿也太不正经了"——HTML里直接塞变量,页面自…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞