
CANN Runtime EZ2001 Execution_Error 错误码解析AI Core 错误与 RAS 故障联动上报机制【免费下载链接】runtime本项目提供CANN运行时组件和维测功能组件。项目地址: https://gitcode.com/cann/runtimeEZ2001 是 CANN Runtime 中一类面向设备侧 AI Core 异常执行 系统 RAS 故障命中场景的执行类错误码Execution_Error。本文结合开源仓库 EZ2001 错误码文档 与 Runtime 错误处理源码讲清它的日志格式、各占位符含义、触发条件与排查方法帮助你在 Ascend 设备上出现 AI Core 报错时快速定位故障类型并决定后续处理路径。一、错误信息格式与占位符含义根据 错误码定义EZ2001 的报错格式为%s Fault %s occurs in the system: %s三个%s占位符按顺序依次表示环境变量值aicore_error_info、环境变量名fault_type、期望值fault_info。仓库中的错误码元数据与文档描述一致。在 错误码模板头文件 中可以确认其注册信息/* EZ2001 - Execution_Error (RAS Fault) */ X(EZ2001, EZ2001, (aicore_error_info, fault_type, fault_info), %s\nFault %s occurs in the system: %s ErrorCodeEZ2001.\n, DLOG_ERROR)从这段元数据可以看出三个关键实现事实日志级别为 DLOG_ERROREZ2001 属于 ERROR 级错误码默认在 Runtime 错误日志plog中可见三个参数的语义固定第一个是 AI Core 的完整错误转储信息aicore_error_info第二个是故障类别fault_type第三个是具体的故障描述fault_info新版模板会在行尾追加ErrorCodeEZ2001.标记便于在日志中直接 grep 定位错误码错误码 JSON 配置 中也保留了基础格式%s\nFault %s occurs in the system: %s。报错示例文档中给出的真实报错示例如下An error occurs on the device(chipId:0, dieId:0), the serial number is 3, the error is aivec error, core id is 0, error code 95, dump info: pc start: 0x120041000068, current: 0x120041000118, sc error info: 0xffffffffffff, su error info: 0xeadbe7fe29c20002, 0x80400000f800f7da, mte error info: 0x263000000040041, vec error info: 0xbf7f93fe007efefa, cube error info: 0, l1 error info: 0, aic error mask: 0x395856, para base: 0x120000200000, mte error: 0x80000000, aic cond: 0. The extend info: errcode:(95) errorStr: The DDR address of the MTE instruction is out of range. subErrType: 0x4. Fault RAS occurs in the system: [event_id:0x80e18400] New uncorrectable ECC / other uncorrectable memory error. For details about troubleshooting, see Health Management Error Definition.示例中三个占位符分别对应第 1 段An error occurs on the device...与The extend info: ...AI Core 错误转储包含芯片/Die 信息、出错的核 ID、错误码以及各模块SC/SU/MTE/VEC/CUBE/L1的错误寄存器值第 2 段的RAS故障类别名表示该 AI Core 错误同时命中了设备侧 RAS可靠性、可用性、可服务性故障事件第 3 段[event_id:0x80e18400] New uncorrectable ECC / other uncorrectable memory error...RAS 事件的 ID 与名称示例中指向新的不可纠正 ECC / 其他不可纠正内存错误这类内存级故障需要按健康管理的错误定义文档进一步处理。二、触发条件AI Core 错误与 RAS 故障的双重要求从源码结构看EZ2001不是所有 AI Core 报错的统一错误码而是AI Core 出错且在设备时间窗口内查询到 RAS 故障事件这一特定组合场景下的上报路径。以 错误处理核心实现 中的PrintCoreInfo函数为例if (!rasFaultDesc.empty()) { RT_LOG_OUTER_MSG_IMPL(ErrorCode::EZ2001, aicoreBuffer.data(), RAS, rasFaultDesc); return; } RT_LOG_CALL_MSG( ERR_MODULE_TBE, %s\nFor details, see the troubleshooting document on the Ascend official website. Search for the keyword \AI Core Error\., aicoreBuffer.data());其逻辑非常清晰命中 RAS 事件rasFaultDesc非空走ErrorCode::EZ2001结构化上报三个参数依次为 AI Core 转储缓冲aicoreBuffer、字面量RAS与 RAS 故障描述未命中 RAS 事件仅打印普通 TBE 错误日志并提示用户按 AI Core Error 关键词查阅官方排障文档不产生 EZ2001 错误码。RAS 事件的查询窗口RAS 事件的匹配由 QueryAndFormatRasFault 函数 完成其查询策略体现了对事件等待的精细处理// SetTaskMteErr(errTaskPtr, dev) 中已经等待过事件发生了这个函数调用结束只有两种情况 // 1、等足了120ms没有查到事件此处不应该再去轮询查事件了而是直接只查一次以这次的查询结果为准 // 2、没有等够120ms事件就发生了函数提前返回此处立即去查询告警一定能查到 // 所以无论那种情况此处都不应该再去轮询查事件了QueryRasFaultEvents的windowAfterMs直接传0 RasEventMatch rasMatch QueryRasFaultEvents(dev, deviceTimeMs, 0U);即在上游处理 MTE 错误时Runtime 已经按设备时间最多等待过一段时间以捕获 RAS 事件到查询阶段只以设备当前时间为基准做一次零后窗匹配windowAfterMs 0避免二次轮询引入误匹配。命中后调用FormatRasFaultDesc(eventId, eventName)生成形如[event_id:0x80e18400] New uncorrectable ECC / other uncorrectable memory error...的故障描述文本。对于 Davidv200 架构平台独立的处理路径 中QueryAndFormatRasFaultDavid还按错误类别细化了策略仅AIX_MTE_POISON_ERROR、AIX_HW_L_ERROR、AIX_LINK_ERROR三类错误会尝试上报用户可见错误码其中AIX_HW_L_ERROR分支需要额外轮询 500ms 等待事件发生其余分支则与 V100 路径一致直接查一次。命中 RAS 时同样通过RT_LOG_OUTER_MSG_IMPL(ErrorCode::EZ2001, aicoreBuffer.data(), RAS, rasFaultDesc)上报与 V100 路径保持同一错误码语义。三、读懂 AI Core 转储信息第 1 个占位符第一个占位符内容是由 PrintCoreInfo 中固定模板4096 字节缓冲aicoreBuffer格式化产生的源码注释特别标明该格式为 aic 工具约定未经约定不得修改。各字段含义如下字段含义chipId/dieId出错芯片与 Die 编号用于多芯/多 Die 场景定位故障物理位置serial number出错的设备错误事件序号可用于关联同一次故障的日志the error is xxx错误大类如示例中的aivec errorAI Vector 核错误core id出错的具体核编号error codeAI Core 错误码示例中为 95pc start/current出错任务的起始 PC 与出错时的当前 PC是定位到具体算子/指令段的关键线索sc / su / mte / vec / cube / l1 error info各硬件模块SC、SU、MTE 内存传输、VEC 向量、CUBE 矩阵、L1 缓存的错误寄存器值非 0 表示对应模块存在异常位aic error mask/para base/mte error/aic condAI Core 错误掩码、参数基址、MTE 错误位与 AI Core 条件寄存器The extend info: errcode:(95) errorStr: ... subErrType: 0x4扩展信息错误码、错误码对应的文字描述示例为 The DDR address of the MTE instruction is out of range即 MTE 指令的 DDR 地址越界与子错误类型排查时的实用读法是先看errorStr文字描述确定错误性质再用pc start/current结合stream/task信息回推是哪个算子或 kernel最后看各模块 error info 定位故障硬件模块。若多个 error info 均为 0 而 mte 相关字段非 0通常指向内存访问类问题如地址越界、ECC 错误这也正是它与 RAS 内存类事件联动最典型的场景。四、解决方法原文档给出的解决方法为根据报错信息排查问题。结合上述源码机制可将其展开为以下可操作的排查步骤确认是否为 RAS 联动故障检查日志中Fault RAS occurs in the system:一行的 event_id 与事件名。若命中 ECC/内存类事件如示例的 New uncorrectable ECC / other uncorrectable memory error说明故障根因在内存子系统应按健康管理Health Management的错误定义处理通常意味着需要上报硬件维修/复位而非单纯修复业务代码解析 AI Core 转储定位软件侧问题依据chipId/dieId/core id锁定物理位置依据error code与errorStr判断错误性质如 MTE 地址越界、指令非法等若错误由算子内存访问越界导致则应回到业务侧检查 tensor 布局、tiling 与内存申请是否匹配用 PC 地址回推算子pc start/current可辅助将故障映射到具体加载的 kernel/算子配合任务序列号serial number与日志中的 stream/task 信息缩小范围区分 EZ2001 与纯 AI Core 错误若日志中没有Fault ... occurs in the system行而只有 AI Core 转储与 AI Core Error 提示语则属于未命中 RAS 事件的普通 AI Core 错误不产生 EZ2001 错误码应直接按 AI Core 错误文档排查业务/算子问题保留原始日志aicoreBuffer格式是为 aic 类工具解析而约定的结构请勿手工改写日志后再分析可结合 Runtime 错误码体系见 错误码总览检索ErrorCodeEZ2001关键字快速聚合同类故障。仓库中的 错误码单元测试 覆盖包括 EZ2001 在内的错误码格式与上报路径可作为该行为稳定性的回归验证依据。五、参考文件文件说明EZ2001 错误码文档报错格式、占位符定义与报错示例error_code.jsonEZ2001 错误码与消息模板的 JSON 定义error_code_meta.h错误码元数据参数名、日志级别与模板device_error_core_proc.ccV100 路径RAS 事件查询与 EZ2001 上报device_error_proc_c.ccDavid(v200) 路径按错误类别查询 RAS 并上报 EZ2001rt_error_code_test.cc错误码格式与上报路径的单元测试【免费下载链接】runtime本项目提供CANN运行时组件和维测功能组件。项目地址: https://gitcode.com/cann/runtime创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考