ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

CANN Runtime 错误消息(ErrMsg)文案模板详解:EE/EH 系列错误码的 Arglist、Reason 与整改示例

CANN Runtime 错误消息(ErrMsg)文案模板详解:EE/EH 系列错误码的 Arglist、Reason 与整改示例 CANN Runtime 错误消息ErrMsg文案模板详解EE/EH 系列错误码的 Arglist、Reason 与整改示例【免费下载链接】runtime本项目提供CANN运行时组件和维测功能组件。项目地址: https://gitcode.com/cann/runtime本篇基于 CANN Runtime 仓库中的 ErrMessage 翻译总表系统讲解 RuntimeEE 系列与 ACLEH 系列错误消息的文案模板、参数列表Arglist与各错误码的典型 Reason 取值并结合 error_code.json、error_code_meta.h 等事实来源说明这些模板如何被上报宏填充、最终呈现给用户。读完后你可以准确解读一条带ErrorCodeEExxxx的错误输出也知道在整改或新增错误文案时应如何选择参数与措辞。一、错误消息体系速览模板、Arglist 与 ReasonCANN Runtime 的错误消息ErrMsg不是随意的日志字符串而是模板 参数的结构化文本。每个外部错误码后四位为 0001~8999 的码在 error_code.json 中定义核心字段为ErrMessageprintf 风格的文案模板其中的%s/%u等占位符按固定顺序取参Arglist占位符对应的参数名列表如func, value, param, expectsuggestion面向用户的Possible Cause与Solution随错误码一起展示。上报时error_code_meta.h 中的 X-Macro 参数表会把error_code.json的模板同步成 C 侧格式串并在末尾追加ErrorCodeEExxxx.后缀。例如 meta.h 中 EE1018 的定义X(EE1018, EE1018, (func, reason), %s failed. Reason: %s. ErrorCodeEE1018.\n, DLOG_ERROR)而 message-examples.md 这份翻译总表正是对其中一批错误码EE1003、EE1006、EE1007、EE1009、EE1011、EE1012、EE1014、EE1015、EE1016、EE1017、EE1018、EE9999、EH0009、EH0011的ErrMessage 模板、Arglist 与 reason 具体描述清单的逐码汇总。下面按错误码逐一展开。二、参数非法类Invalid_ArgumentEE1003值非法且能给出期望值errTitleInvalid_ArgumentErrMessage%s failed because value %s for parameter %s is invalid. Expected value: %s.Arglistfunc, value, param, expect典型 reason参数值与RT_EVENT_FLAG存在互斥exclusive OR参数值需大于或等于 0。Solution1. 检查函数输入参数范围2. 检查函数调用关系。该码是 Runtime 层输入参数非法的首选通用码在 error-code-guide.md 中标注 ⭐。func参数建议传入语义化描述而非__func__。例如仓库中的实际用法引自 error-code-guide.md 的示例RT_LOG_OUTER_MSG_WITH_FUNC_DESC(ErrorCode::EE1003, Obtaining the logical device ID based on the user device ID, userDevId, userDevId, [0, std::to_string(userDeviceCnt) ));打屏效果Obtaining the logical device ID based on the user device ID failed because value 8 for parameter userDevId is invalid. Expected value: [0, 4). ErrorCodeEE1003.EE1011 vs EE1012同 Arglist、不同模板两者 Arglist 完全相同func, value, param, reason仅文案模板存在一词之差错误码ErrMessage 模板第 3 个参数前的措辞EE1011%s failed. Value %s for parameter %s is invalid. Reason: %s.for parameter %sEE1012%s failed. Value %s for %s is invalid. Reason: %s.for %s省去 parameterEE1011 典型 reason翻译总表原文节选非持久流%u不支持清空流任务Non-persistent stream does not support stream task clearance流%u必须绑定到模型Stream %u must be bound to a modelAI CPU 流%u不支持清空流任务count不能超过最大值destMax % PRIu64 memcpyAddrInfo未做 64 字节对齐无法通过stubFunc找到对应 kernel——指定的函数地址无效或 kernel 状态异常无法通过tilingKey找到对应 kernel——tilingKey 无效或 kernel 状态异常流%d不属于当前 context流未绑定到模型The stream is not bound to a model带ACL_STREAM_DEVICE_USE_ONLYflag 的流不能绑定到模型。EE1012 典型 reason当前 device 无法下发 Notify Wait——对应的 Notify Wait 必须在创建 IPC Notify 的 device 上下发。EE1012 的 suggestion 中Possible Cause标注为 The host memory is insufficient注意这是总表原文的字段内容属于该码预置 suggestion而非每个场景的通用结论。选择规则与 error-code-guide.md 的决策树一致把第 3 个参数代入两种模板读起来哪个自然用哪个。参数名是普通单词如deviceId时优先 EE1011参数名本身已是描述性短语如queue name length时用 EE1012避免 for parameter queue name length 的冗余。仓库中 EE1011 的真实调用示例// src/acl 层对应码为 EH0009Runtime 层示例 kernel Runtime::Instance()-KernelLookup(stubFunc); COND_RETURN_AND_MSG_OUTER(kernel nullptr, RT_ERROR_KERNEL_NULL, ErrorCode::EE1011, __func__, static_castconst char_t *(stubFunc), stubFunc, The corresponding kernel cannot be found through stubFunc. The specified function address is invalid or the kernel status is abnormal);打屏效果rtKernelLaunch failed. Value kernel_Add for parameter stubFunc is invalid. Reason: The corresponding kernel cannot be found through stubFunc.... ErrorCodeEE1011.EE1017无法给出参数具体值errTitleInvalid_ArgumentErrMessage%s failed. Parameter %s is invalid. Reason: %s.Arglistfunc, param, reason注意没有value因为该场景下拿不到或不应打印参数具体值Solution无suggestion 为 N/A翻译总表给出了 15 条典型 reason覆盖模型/流/label 的归属与状态校验节选流%u所在的模型%u尚未加载需在模型加载后再清空流任务指定地址必须是 device 地址无法通过 device ID%d、stream ID%u、task ID%u三元组找到对应任务配置中待更新数据存放的 device 内存地址与当前指定地址不一致多次任务更新必须使用相同的 device 内存地址与 label[%u]关联的流%d不在当前 context 中与 label[%u]关联的流%d不在模型中需先调用rtLabelSet将流绑定到模型与 label[%u]关联的流和 label[0]关联的流不属于同一模型仅随机数生成任务支持该更新操作argHandle中para.type为 place holder 的参数个数%u必须小于%u绑定到流的模型%u与 label 所属模型%u不一致当前流%u与 label 关联的流%u不一致持久流persistent stream不支持查询任务执行状态回调函数fn已注册不能重复注册回调函数fn尚未注册当前任务类型不支持该操作。EE1017 的适用前提是无法给出参数具体值——例如参数是句柄/对象属性或其取值本身无诊断意义若两个及以上用户参数间关系不满足如要求 A B也推荐用 EE1017把具体参数值和关系写进 Reason。EH0009ACL 层对应码参数非法 原因errTitleInvalid_ArgumentErrMessage%s failed. Value %s for parameter %s is invalid. Reason: %s.Arglistfunc, value, param, reasonSolution1. 检查函数输入参数范围2. 检查函数调用关系。翻译总表列出的典型 reason该流未注册到任何 allocatorThe stream is not registered with any allocator指定参数%d短于算力组computing power group信息的长度无法保存该信息当前数据类型不支持当前物理内存属性不支持。EH0009 与 EE1011 的模板完全一致层级不同EE 用于src/runtime/代码EH 用于src/acl/代码。ACL 层的真实调用示例引自 macro-selection-guide.md 中 EH0009 专用宏说明// ACL_CHECK_INVALID_PARAM_WITH_REASON 系列宏上报 EH0009 acl::AclErrorLogManager::ReportInputError(acl::INVALID_PARAM_REASON_MSG, {func, value, param, reason}, {Checking the synchronous memory copy parameter validity, widthVal.c_str(), width, errMsg.c_str()}); // 输出Checking the synchronous memory copy parameter validity failed. // Value 2048 for parameter width is invalid. Reason: must be less than spitch and dpitch. // ErrorCodeEH0009.三、不支持类Not_SupportedEE1006配置参数级不支持三参数模板errTitleNot_SupportedErrMessage%s failed. %s is not supported. Reason: %s.Arglistfunc, type, reasonsuggestion.Possible Cause当前 CANN 软件版本不支持当前驱动软件版本不支持当前芯片版本不支持。suggestion.Solution1. 升级 CANN 软件版本2. 升级驱动软件版本。翻译总表列出了 8 条典型 reason是理解流/事件/模型运行时哪些操作被禁止的好材料OFFLINE 模式下不支持 P2P 内存类型融合任务仅支持 HCOMMAI Core、AI CPUAI Core、CCUAIC 的组合或单个 CCU 任务当前 SoC 仅支持任务数正常的流不支持巨量任务流huge streamDevice-only event 只能在 device 上调用当前流用于承载 AI CPU 调度任务不支持设置优先级当前 SoC 不支持该数据类型的 reduce 操作当前 SoC 不支持 P2P 内存分配仅分配巨页内存策略与分配底层 cache 内存策略冲突。使用要点若不支持可通过升级解决Reason 中应写明支持的软件版本信息type参数优先使用语义化描述。仓库中的真实调用节选自 api_error.cc 中的 EE1006 调用点如 stream flag 检查COND_RETURN_AND_MSG_OUTER((stm ! nullptr) ((stm-Flags() RT_STREAM_AICPU) ! 0U), RT_ERROR_STREAM_INVALID, ErrorCode::EE1006, Synchronizing a stream, Stream flags value std::to_string(stm-Flags()), The current stream is used to carry AI CPU scheduling tasks and does not support stream synchronization);打屏效果Synchronizing a stream failed. Stream flags value 4 is not supported. Reason: The current stream is used to carry AI CPU scheduling tasks and does not support stream synchronization. ErrorCodeEE1006.EE1015驱动版本能力不足errTitlePackage_Error_Incorrect_Driver_VersionErrMessage%s failed. Reason: The driver version capability is insufficient. %sArglistfunc, reason典型 reason当前版本%u早于要求的版本%u。Solution升级驱动软件版本。该码专用于升级驱动包即可解决的场景例如驱动.so中找不到所需符号COND_RETURN_AND_MSG_OUTER(tsdOpenNetService_ nullptr, RT_ERROR_DRV_TSD_ERR, ErrorCode::EE1015, Starting the HCCP process, Symbol TsdOpenNetService not found in libtsdclient.so.);打屏效果Starting the HCCP process failed. Reason: The driver version capability is insufficient. Symbol TsdOpenNetService not found in libtsdclient.so. ErrorCodeEE1015.EE1016场景/功能不支持两参数模板errTitleNot_SupportedErrMessage%s failed. Reason: %s.Arglistfunc, reason翻译总表给出的 3 条典型 reason 均与ACL Graph 捕获模式相关当前 context 的其他线程处于捕获状态当前线程无法执行该操作可调用aclmdlRICaptureThreadExchangeMode切换捕获模式模板给出aclmdlRICaptureBegin设置的模式、当前线程模式、aclmdlRICaptureThreadExchangeMode设置的模式三个值当前线程%d处于捕获模式且当前操作不被支持——只有 RELAXED 模式支持该操作其他线程处于捕获状态的紧凑变体contextCaptureMode%d, threadCaptureMode%d, exchangeCaptureMode%d。Solution检查aclmdlRICaptureBegin设置的模式是否支持当前线程中的当前操作。EE1016 覆盖两类固有不支持某状态/场景下不支持某类操作如从 stop 模式切到 continue 模式以及与芯片无关的完整功能不支持。capture mode 场景有专用宏CHECK_CAPTURE_MODE_SUPPORT_AND_RETURN[_WITH_DESC]其内部通过RT_LOG_OUTER_MSG_IMPL(ErrorCode::EE1016, funcName, reason)完成上报。EH0011ACL 层芯片不支持专用码errTitleNot_SupportedErrMessageThe current system or device does not support %s.Arglistfunc无 reason 字段典型 reason体现在 func 参数文案中仅支持 Ascend 910 芯片。EH0011 与 EE1005 模板一致The current system or device does not support %s.用于换芯片可解决的场景。ACL 层真实示例引自 macro-selection-guide 与 error-code-guide 的示例acl::AclErrorLogManager::ReportInputError(acl::UNSUPPORTED_SYSTEM_MSG, {func}, {aclrtSetDeviceWithoutTsdVXX, only Ascend 910 chips are supported});注意非芯片原因的不支持配置参数、软件版本、固有限制在 ACL 层应使用 EH0006 而非 EH0011。四、资源与执行类EE1007流绑定模型失败errTitleResource_Error_Bind_StreamErrMessage总表版本Failed to bind stream with ID %s. Reason: %s.error_code.json 与 error_code_meta.h 中的现行模板为Failed to bind stream (stream_id%s). Reason: %s.Arglistid, reason典型 reason流绑定失败stm参数不能是指定 flag%u的流非持久流不能绑定到模型该流绑定了多个 mdlRISize: %u该流已被绑定AI CPU 流被复用模型已绑定到另一个流。Solution先将流从已绑定的模型上解绑再绑定到当前模型。仓库真实调用示例模型输入流绑定检查if (streamIn-IsModelStream()) { RT_LOG_OUTER_MSG_IMPL(ErrorCode::EE1007, streamId, RtFmtMsg(The current stream has been bound to a model (model_id%u) and cannot be bound to the input model (model_id%u), streamIn-Model_()-Id_(), Id_())); return RT_ERROR_STREAM_MODEL; }EE1009模型执行失败errTitleExecution_Error_ModelErrMessage总表版本Failed to execute model with ID %s. Reason: %s.现行模板为Failed to execute model (model_id%s). Reason: %s.Arglistid, reasonid 为模型 ID典型 reason当前流不能与模型流相同指定 flag%u的流不能用于模型执行当前 ACL Graph 模型运行实例既不包含任何可执行任务也不包含任何可执行流。示例Failed to execute model (model_id1). Reason: The current aclgraph model running instance neither contains any executable task nor contains any executable stream. ErrorCodeEE1009.EE9999内部错误无模板仅原始消息EE9999 是 Runtime 内部错误码没有 JSON 模板——总表为其预留了空的 errTitle/ErrMessage/Arglist 字段仅汇总典型 reason 清单共 40 条反映的是内部逻辑断言的常见形态。上报时格式为XX9999: Inner Error!加原始消息由_INNER系列宏写入如COND_RETURN_AND_MSG_INNER。其 reason 清单可视为内部第一现场的故障字典节选模块加载失败程序大小应为大于 0 的值实际为 0为rtArgsEx_t.args分配 device 内存失败基于 SO 名获取 SO 地址失败当前流状态不满足下发任务的条件任务提交后的后处理失败label 列表中已存在相同 labellabel 信息从 host 拷贝到 device 失败Label ID%u被重复释放devDstAddr被重复设置当前线程与执行StreamBeginCapture的线程不同模型执行前设置 notify 失败等待流内所有任务完成失败流与模型解绑失败——指定流未绑定到当前模型模型不包含任何流str长度必须大于 0流中最后一个任务类型不是 event record捕获事件尚未被记录重新申请的 SQ/CQ/逻辑 CQ 与原始值不一致当前流的 SQ 和 CQ 已申请过不能再次申请远端 SQ 不能被复用订阅同步调度的线程数超过最大值%uTS 状态异常Device%u故障流状态为%u模型流已满sendSqenum的值%u不能大于任务允许的最大 SQE 数%uSQE 总数%u不能大于 SQ 深度%uDevice%u不可用任务数不能超出任务组大小清理任务期间必须禁用 SQDQS 流不能用ts_id %u创建应使用ts_id %uqid %u对应的 mbuf pool 信息不存在检查配置流程被依赖的程序可能已被释放当前 label 已被设置到另一个流从 device 查询到的 abort 状态无效流回收超时任务回收失败绑定到当前流%u的 ACL Graph 模型%u不满足更新条件——运行或捕获状态的 ACL Graph 模型均不可更新下发 CmoAddr 任务的流不在模型中指定 DVPP 组的流%d不能绑定到模型。从源码结构看内部错误码的获取规则是一次错误获取中若混合了外部/内部错误码优先取第一条外部错误码作为首错带 title/cause/solution其余进入 TraceBack若全部是内部错误码则第一条作为首错XX9999: Inner Error!其余进入 TraceBack。五、文件解析与整改要点EE1014算子 ELF 二进制解析失败errTitleFile_Operation_Error_ParseErrMessageFailed to parse the binary file of the operator. Reason: %s.Arglistreasonsuggestion.Possible Cause1. 算子二进制文件损坏2. 构建参数不正确。suggestion.Solution重新构建并加载算子二进制文件。翻译总表列出的 10 条典型 reason 精确对应 ELF 文件头与 section header 的校验逻辑是排查算子.so/bin 损坏的直接依据算子二进制 ELF 文件头中e_shentsize的值%u或e_shnum的值%u不正确——两者均不能为 0且乘积不能超过uint64_t最大值ELF 文件头中e_shentsize的值%u必须等于 ELF section header 的大小%uELF section header 地址不能为空排名%u的 section 的偏移量%u超出 ELF 对象大小%u排名%u的 section 的sh_link值%u无效有效范围[%u, %u]section-sh_entsize的值%lu无效有效范围(0, %lu]section-sh_entsize的值%zu无效必须大于或等于%u排名%u的sh_ent偏移量%u超出 ELF 对象大小%uELF 文件必须是 64 位文件获取 meta section 失败kernelName%s, meta type%u。该码只能用于算子 ELF bin 解析失败其他文件操作场景如路径不可访问误用会输出误导性的 Failed to parse the binary file of the operator 前缀。文案整改的三条硬约束结合总表所在目录的 README、rectification-principles.md 与 review-checklist.md使用/修改这些模板时需满足参数数量严格一致宏调用传入的参数个数必须等于 Arglist 长度%s占位符与参数按序一一对应EE1003 为 4 个EE1017 为 3 个EE1014 只有 1 个 reason。双源同步错误码元数据以 error_code.json 为准修改模板时须同步 error_code_meta.hX-Macro 表总表中的new ErrMessage与 json/meta 的现行措辞可能因整改进度略有差异如 EE1007 的 with ID %s 与 stream_id%s以代码为准。参数拼接用RtFmtMsg_OUTER宏的参数需转换为 string动态内容禁止std::string直接相加会导致 .so 膨胀应使用RtFmtMsg(Changing stream %u is not supported, id)之类的栈上格式化。六、如何阅读一条实际的错误输出把总表倒过来用即可定位问题。以一条真实形态的输出为例Setting the stream error reporting mode failed. Reason: Changing stream 15 from stop mode to continue mode is not supported. ErrorCodeEE1016.由ErrorCodeEE1016查总表 → errTitle 为 Not_SupportedArglist 为func, reason第一个%s填了 Setting the stream error reporting mode语义化 func 描述Reason:之后到ErrorCode之前整段是 reason 参数该码 suggestion 为 N/A处理方向由 reason 本身指示固有不支持无需升级。对照之下Expected value:结尾的 EE1003、%s is not supported结构的 EE1006、以及带stream_id/model_id资源标识的 EE1007/EE1009都能按同一方式拆解。小结与延伸阅读错误码全量清单、决策树与常见误用示例error-code-guide.md上报宏COND_RETURN_AND_MSG_OUTER、ACL_CHECK_INVALID_PARAM_WITH_REASON等的选择规则macro-selection-guide.md整改边界、第一现场与打印格式规范rectification-principles.md提交前自检双源同步、参数数量、文案语法review-checklist.md元数据事实来源error_code.json、error_code_meta.h、error_manager.h。【免费下载链接】runtime本项目提供CANN运行时组件和维测功能组件。项目地址: https://gitcode.com/cann/runtime创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表