尧图精选

CANN opbase 错误码 EZ0034 Config_Error 详解:多配置项值无效的识别、上报与处理

🕒 发布时间:2026/9/19 7:58:41 📁 来源:尧图网络
CANN opbase 错误码 EZ0034 Config_Error 详解多配置项值无效的识别、上报与处理【免费下载链接】opbase本项目是CANN算子库的基础框架库为算子提供公共依赖文件和基础调度能力。项目地址: https://gitcode.com/cann/opbase导读EZ0034 是 CANN 算子库基础框架库cann/opbase中定义的一个算子侧错误码用于在配置文件中同时存在多个配置项的值无效时输出 ERROR 级别日志并上报错误。本篇文章以该错误码的官方错误码文档为核心结合仓库中include/op_common/log/log.h的宏实现与src/op_common/log/log.cpp的错误码注册表完整解析其报错格式、占位符语义、典型报错场景AIPP 图像预处理配置、底层上报机制以及排查与解决思路帮助算子开发者快速定位并修复配置文件问题。EZ0034 在错误码体系中的位置在 Operator Errors 错误码总表 中EZ0034 属于 Config_Error配置错误类错误码。同一类别的错误码还包括错误码适用场景报错消息形态EZ0032单个配置项无效携带期望值Value %s of configuration item %s in configuration file %s is invalid, it should be %s.EZ0033单个配置项无效携带原因Value %s of configuration item %s in configuration file %s is invalid. Reason: %s.EZ0034多个配置项无效携带原因Values %s of configuration items %s in configuration file %s are invalid. Reason: %s.可以看到EZ0034 与前两者的区别在于它面向一次校验中多个配置项同时失效的场景报错消息采用复数形态Values、items、are invalid并将配置项名称与实际值以逗号分隔的列表形式一次性呈现。错误信息格式解析官方错误码文档EZ0034-Config_Error.md给出的报错格式如下Values %s of configuration items %s in configuration file %s are invalid. Reason: %s.四个占位符%s的含义依次为占位符序号语义对应示例第 1 个%s多个配置项的实际值列表256, 221第 2 个%s多个配置项的名称列表src_image_size_h, src_image_size_w第 3 个%s配置文件的路径/home/ops-cv/build/tests/ut/op_host/aipp_ut_test_28.cfg第 4 个%s报错原因When input_format is YUV420SP_U8, src_image_size_h and src_image_size_w must be even numbers.该占位符语义与源码中src/op_common/log/log.cpp错误码注册表完全一致EZ0034 的Arglist字段为values, items, config_file, reason即上报时依次填充值列表、项名列表、配置文件、原因四个参数。典型报错场景AIPP 图像预处理配置校验官方文档给出的报错示例如下Values 256, 221 of configuration items src_image_size_h, src_image_size_w in configuration file /home/ops-cv/build/tests/ut/op_host/aipp_ut_test_28.cfg are invalid. Reason: When input_format is YUV420SP_U8, src_image_size_h and src_image_size_w must be even numbers.该示例来自 AIPPAI Preprocessing图像预处理场景的算子 Host 侧单元测试配置tests/ut/op_host/aipp_ut_test_28.cfg还原了典型的配置校验链路配置文件中设置了输入图像宽高配置项src_image_size_h源图像高取值 256与src_image_size_w源图像宽取值 221同时设置了输入图像格式input_format YUV420SP_U8校验逻辑发现 YUV420SP_U8 格式要求宽高均为偶数而221为奇数因此src_image_size_h与src_image_size_w两个配置项同时无效由于失效的配置项不止一个框架选择上报 EZ0034而非单配置项场景下的 EZ0033。底层实现原理上报宏定义EZ0034 由日志头文件 include/op_common/log/log.h 中定义的宏OP_LOGE_FOR_INVALID_CONFIGS_WITH_REASON上报其核心逻辑如下#define OP_LOGE_FOR_INVALID_CONFIGS_WITH_REASON(opName, configFile, items, values, reason) \ do { \ std::string _safe_opName_(opName); \ std::string _safe_configFile_(configFile); \ std::string _safe_items_(items); \ std::string _safe_values_(values); \ std::string _safe_reason_(reason); \ OP_LOGE_LIBOPAPI_REPORT( \ _safe_opName_.c_str(), \ Values %s of configuration items %s in configuration file %s are invalid. Reason: %s., \ _safe_values_.c_str(), _safe_items_.c_str(), \ _safe_configFile_.c_str(), _safe_reason_.c_str()); \ const std::vectorconst char* msgKey {values, items, config_file, reason}; \ const std::vectorconst char* msgvalue {_safe_values_.c_str(), _safe_items_.c_str(), \ _safe_configFile_.c_str(), _safe_reason_.c_str()}; \ REPORT_PREDEFINED_ERR_MSG(EZ0034, msgKey, msgvalue); \ } while (0)从宏实现可以看出 EZ0034 的两级上报机制本地日志输出通过OP_LOGE_LIBOPAPI_REPORT以 ERROR 级别写日志日志记录包含源文件、行号、子模块名、函数名、线程 ID 与算子名OpName等上下文信息见 log.h预定义错误码上报通过REPORT_PREDEFINED_ERR_MSG(EZ0034, ...)将values / items / config_file / reason四个键值对上报为结构化错误信息供上层框架或调用方解析。宏实现与错误码文档的报错模板完全对应这正是错误码文档中%s占位符语义的直接来源。错误码注册表在 src/op_common/log/log.cpp 的错误码注册表中EZ0034 被登记为{ errClass: Operator Errors, errTitle: Config_Error, ErrCode: EZ0034, ErrMessage: Values %s of configuration items %s in configuration file %s are invalid. Reason: %s., Arglist: values, items, config_file, reason, suggestion: { Possible Cause: N/A, Solution: Modify the configuration file by referring to the specifications in the user guide. } }注册表明确了 EZ0034 的官方建议解决方案为参考用户指南中的规格修改配置文件。解决方法当收到 EZ0034 报错时建议按以下步骤排查定位配置文件从报错消息的第 3 个占位符读取配置文件绝对路径如aipp_ut_test_28.cfg确认是哪个算子的配置文件定位无效配置项从第 1、2 个占位符读取实际值列表与配置项名称列表注意多个配置项以逗号分隔需逐项核对理解约束原因从第 4 个占位符读取报错原因它通常直接给出约束条件。例如示例中原因明确指出当input_format为YUV420SP_U8时src_image_size_h和src_image_size_w必须是偶数此时只需将奇数配置值221调整为偶数如 220 或 222即可对照用户指南修改将配置值修改到对应配置项在用户指南中规定的取值范围与取值约束内重新加载配置。算子侧使用该错误码的配套 APIEZ0034 对应一个公开的日志宏接口OP_LOGE_FOR_INVALID_CONFIGS_WITH_REASON其 API 说明见 OP_LOGE_FOR_INVALID_CONFIGS_WITH_REASON也收录于 op_common_api_introduction.md 的接口总览中。函数原型OP_LOGE_FOR_INVALID_CONFIGS_WITH_REASON(opName, configFile, items, values, reason)参数说明参数名输入/输出说明opName输入算子名称或 aclnn 接口名称支持const char*或std::string类型configFile输入配置文件路径支持const char*或std::string类型items输入配置项名称列表支持const char*或std::string类型values输入实际值列表支持const char*或std::string类型reason输入错误原因支持const char*或std::string类型返回值无。调用示例OP_LOGE_FOR_INVALID_CONFIGS_WITH_REASON(MyOp, config.ini, block_size, ub_size, 128, 64, value exceeds limit);该调用会输出 ERROR 级别日志并上报一条 EZ0034 错误报错消息形如Values 128, 64 of configuration items block_size, ub_size in configuration file config.ini are invalid. Reason: value exceeds limit.与其他配置类错误码的区分算子开发者上报配置错误时应根据无效配置项的数量与可提供的附加信息选择合适的错误码EZ0032单个配置项无效且能给出期望值it should be %s对应宏OP_LOGE_FOR_INVALID_CONFIGEZ0033单个配置项无效且能给出具体原因Reason: %s对应宏OP_LOGE_FOR_INVALID_CONFIG_WITH_REASONEZ0034多个配置项同时无效且能给出具体原因对应宏OP_LOGE_FOR_INVALID_CONFIGS_WITH_REASON。当多个配置项因同一约束同时失效如示例中宽高必须同为偶数时应使用 EZ0034 一次性上报全部失效项避免为每个配置项单独上报造成日志噪音也便于调用方整体定位问题。小结EZ0034 是 CANN opbase 面向多配置项值无效场景的统一错误码。从官方错误码文档到log.h中的宏定义、log.cpp中的错误码注册表再到配套 API 文档仓库提供了从报错格式到上报实现再到调用方式的完整闭环。开发者排查该错误时核心思路是读取报错消息中的配置文件路径与原因字段依据原因中给出的约束条件对照用户指南将配置值修正到合法范围内。【免费下载链接】opbase本项目是CANN算子库的基础框架库为算子提供公共依赖文件和基础调度能力。项目地址: https://gitcode.com/cann/opbase创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
上一篇/下一篇内容由系统自动关联 返回资讯列表 →