4. EID错误列表

下表展示了EID 错误类型、可能原因、影响及修复建议,供用户参考。

表 4.1 EID错误列表

EID

可能原因

影响

修复建议

0x1101

EEPROM数据校验出错

固件中存储的参数可能出错

联系售后维修

0x1102

寄存器访问违反安全策略限制

软件的寄存器操作未成功

检查软件中是否有对寄存器的越权访问

0x1103

主flash损坏,从备用flash启动

无直接影响,固件会自动修复

不需要修复

0x1104

board自检异常,或初始化失败

业务无法运行

检查使用的VBIOS是否正确

0x1105

芯片硬件配置信息校验出错

业务无法运行

检查使用的VBIOS是否正确

0x1106

VR芯片固件版本校验出错

芯片性能可能受影响

尝试更新VR固件

0x1107

PHY固件SRAM数据校验出错

PCIe链路可能会出现异常

联系售后维修

0x1108

光模块被拔出,或光链路异常

光口通信可能出现异常

检查光口物理连接

0x1109

slave die flash损坏,尝试修复

无直接影响,固件会自动修复

不需要修复

0x110a

MetaXLink链路发生异常

MetaXLink 通信可能会出现异常

检查MetaXLink物理连接

0x2101

  1. 内存的越界访问

  2. 提前释放

  3. 未申请就访问

  4. 申请内存的rwx权限配置错误

业务发生异常

查看错误信息中 hwippage va 字段,是该IP发出了 page va 字段对应的虚拟地址导致ATU报错

需要用户程序进一步定位是否使用了错误的虚拟地址或者申请内存使用了错误的rwx权限

0x2102

error_type xxx:表示触发了哪种类型的XCORE shader error

  • 0x1:fwe_err

  • 0x2:illegal_inst

  • 0x4:mem_viol (non align access)

  • 0x8:xnack_error

  • 0x10:out_of_range

  • 0x20:fuc_error

  • 0x40:timeout_error

发生异常进程结束

  • 若error type = 1,即fwe error,一般是来自外部VRAM错误的传播,这种情况下,挨着FWE错误会有一个MC RAS badpage错误,参见EID(0x2104)的描述

  • 若error type = 2,即非法指令,确保用户编写的kernel函数正确并且编译器正确使用,同时确保kernel bin memory没有发生内存踩踏

  • 若error type = 4,即memory violation,一般是非法地址或者与硬件的对齐要求不满足,检查用户编写的kernel函数(硬件对齐要求64B)

  • 若error type = 8,即xnack error,伴随对应的ATU fault触发,一般是内存的越界访问/提前释放/未申请就访问/申请内存配置错误的rwx权限等,用户程序根据ATU fault的提示信息进一步debug,参见EID(0x2101)的描述

  • 发生了上述GPU shader异常,查阅UMD log(MXMACA SDK的trap功能默认开启),会有对应的出现异常的kernel名字打印,分析kernel进一步debug(参考UMD EID(0x3101~0x3106, 0x3108))

0x2103

GPU内部资源释放失败

应用程序结束过慢或者卡住

尝试warmreset或重启服务器进行恢复,仍无法解决报bug给硬件厂商

0x2104

HBM显存出现坏页

坏页隔离失败会发生异常结束进程

  • 遇到HBM显存坏页错误,可以尝试将业务进程全部退出,重新执行业务。若重新执行业务还会遇到同样的坏页错误,可以尝试warm reset或重启服务器进行恢复

  • GPU HBM内存颗粒有问题,可以尝试换卡

0x2105

在GPU内核驱动加载或者卸载过程中,用户正在尝试通过SMI接口访问GPU相关资源

SMI信息获取失败

在GPU内核驱动加载或卸载完成后,再执行GPU业务操作

0x2106

导致这个问题的原因比较复杂,需要结合软硬件环境综合判断

KMD与SMP通讯失败导致驱动加载失败或者SMI获取信息失败

联系硬件厂商解决

0x2107

PCIe bar空间不够

设备枚举异常,驱动无法加载

  • 修改服务器BIOS,启用large BAR功能,有些服务器选项为启用超过4GB PCI地址空间,具体可联系硬件厂商确认

  • 若启用large BAR无法解决问题,则需确认VBIOS是否启用了VF BAR导致服务器PCI空间不够,联系硬件厂商解决

0x2108

UMD申请内存使用的VA有重叠,KMD会检测每个进程各GPU VA到PA的entry映射是否与其他entry有重复(包括部分重复),一旦检测到GPU VA到PA存在多重映射,KMD 日志就会记录冲突地址,标记当前映射失败,并返回错误码

业务执行失败

联系硬件厂商解决

0x2109

GPU应用程序使用了过多的HBM显存或者GPU SDK存在内存管理相关问题

业务执行失败

  • 应用程序使用过多的显存,需要减少对HBM显存过多申请或者及时释放没用的HBM显存

  • GPU SDK存在内存管理相关问题,可以联系硬件厂商解决

0x210A

GPU应用程序使用了过多的系统内存或者GPU SDK存在内存管理相关问题

业务执行失败

  • 应用程序使用过多的系统内存,需要减少对系统内存过多申请或者及时释放没用的系统内存

  • GPU SDK存在内存管理相关问题,可以联系硬件厂商解决

0x210B

GPU触发INT中断和CPU处理中断的过程是异步的,当GPU触发INT中断消息的速度超过CPU处理中断的速度,会出现GPU驱动的中断FIFO队列溢出问题

出现丢中断,影响业务执行

确认CPU是不是运行在最高频率,通过 cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor,确认是否为performance模式;如果不是,则执行 echo performance > /sys/devices/system/cpu/cpu<x>/cpufreq/scaling_governor 命令切换为performance模式,其中 <x> 为所有CPU的index。

如果还有问题,请联系硬件厂商。

0x210C

GPU卡PCIe通讯链路不稳定或者服务器PCIe相关配置不对

业务异常或者不可靠

链路不稳定可以尝试重新插拔GPU卡或者更换PCIe板卡。

需要联系硬件厂商和服务器厂家分析PCIe AER产生的原因。如果是偶尔发生这种情况,可以尝试warm reset或重启服务器进行恢复。

0x210D

前面执行业务异常导致GPU通讯断开或者硬件问题导致

GPU设备无法访问

硬件问题可以尝试更换PCIe slot或者GPU卡进行测试。

需要联系硬件厂商和服务器厂家分析PCIe通讯断开产生的原因。如果是偶尔发生这种情况,可以尝试warm reset或重启服务器进行恢复。

0x210E

IP发生Fatal error或者uncorrectable error

发生异常业务退出

可能是IP发生了Fatal Error或者Uncorrectable Error,可以先尝试warmreset或重启服务器进行恢复。如果还是会重现这个错误,则需要换卡进行测试。

需要联系硬件厂商分析造成syncflood的IP发生错误的原因。

0x210F

硬件发生RAS异常

发生异常业务退出

可能是硬件问题,可以先尝试warm reset或者重启服务器进行恢复。如果还是会重现这个错误,可以尝试更换GPU卡进行测试。

需要联系硬件厂商分析RAS ERROR产生的原因。

0x2201

GPU内部资源释放失败

应用程序结束过慢或者卡住

GPU内部任务调度失败,报bug给硬件厂商,然后尝试warm reset或重启服务器进行恢复

0x2202

一般是软件传参非法或者条件不满足导致

业务发生异常

该问题需要结合实际环境配置和报错信息综合判断原因

0x2301

服务器MMIO空间不够

驱动加载失败

确认服务器BIOS是否有MMIO空间相关配置选项,如果有,建议将MMIO空间配置到最大

0x2302

GPU驱动与SMP通讯失败

驱动加载失败或者SMI获取信息失败

  1. 初步排查,使用 lspci -s DBDF -x 命令测试GPU卡的PCIe configure space能否继续访问(DBDF为故障卡的PCIe DBDF)

    • 如果命令返回全f数据,则表示GPU卡PCIe基本通路有问题,建议按照步骤2排查硬件问题

    • 如果命令返回有效值,则表示GPU卡PCIe基本通路正常,建议按照步骤3排查GPU VBIOS软件问题

  2. 排查硬件相关问题,比如GPU卡与服务器的接插件的连接是否良好,断电后重新插拔GPU卡、更换PCIe slot或更换GPU卡

  3. 排查GPU VBIOS软件问题,通过mx-report工具抓取GPU卡状态信息,然后报告给硬件厂商

0x2303

GPU卡的VBIOS固件版本与当前GPU驱动不兼容

业务无法使用GPU设备

可以尝试升级与GPU驱动兼容的VBIOS版本

0x2304

GPU卡不支持SRIOV虚拟化

驱动加载失败

GPU卡不支持SRIOV功能,使用 lspci -s DBDF -vvv 命令查看GPU卡是否有SRIOV能力(DBDF为故障卡的PCIe DBDF),如果不支持SRIOV能力,则需要升级为支持SRIOV的VBIOS版本

0x2305

服务器BIOS是否开启SRIOV相关配置且MMIO空间不够或者GPU VBIOS版本与服务器不匹配

驱动加载失败

  • 服务器BIOS是否开启SRIOV相关配置,MMIO空间是否开启到最大

  • 确认GPU VBIOS版本是否与服务器匹配,可以尝试升级为SRIOV MMIO空间需求更小的VBIOS版本

0x2306

服务器BIOS未开启SRIOV相关配置

驱动加载失败

  • 服务器BIOS是否开启SRIOV相关配置,如果有SRIOV配置选项,则将SRIOV配置打开

  • 用mx-report工具收集VBIOS运行日志,并报告给硬件厂商

0x2307

GPU硬件或者VBIOS固件问题

FLR复位失败

用mx-report工具收集VBIOS运行日志,并报告给硬件厂商

0x2308

可能之前业务执行异常导致GPU通讯断开或者硬件问题

GPU设备无法访问

  • 可能是前面执行业务异常,导致GPU通讯断开,可从之前最开始出现错误的地方排查

  • 可能是硬件问题,可以尝试更换PCIe slot或GPU卡进行测试

0x2309

  1. 页表所在HBM不稳定

  2. KMD页表管理逻辑出错

  3. 非法VA或者越界访问

业务发生异常

使用非法VA或者越界访问,用户定位代码是否非法使用地址,其他原因报bug给硬件厂商处理

0x3101

Fwe错误

用户进程因GPU致命异常退出

参见EID(0x2102)的描述

0x3102

核函数指令的编码或操作数有误,GPU硬件检测到非法指令

  • 若更新MXMACA SDK版本后发生,可先回退MXMACA SDK版本,报bug给硬件厂商处理

  • 若首次出现,可尝试设置环境变量保护GPU rodata段(export MACA_DEVICE_IMAGE_MALLOC_MODE=1)后,再次运行用户进程。如果问题不能解决,报bug给硬件厂商处理

0x3103

核函数访问内存的偏移量小于0,越界或数据未按要求对齐

EID打印的核函数所属软件模块定位分析:review核函数代码,可借助MXMACA SDK的trap工具和打印详情辅助分析,也可以到沐曦开发者社区寻求更多帮助

0x3104

核函数使用的VA地址有误

0x3105

寄存器访问越界,例如在只分配16个STREG时访问第17个STREG触发

0x3106

硬件极小概率的电磁干扰引起的,瞬间就会恢复

检修设备周围的电磁环境

0x3108

核函数执行时间超过了 MACA_KERNEL_TIMEOUT 设定的时间,GPU shader根据超时设置停止执行

EID打印的核函数所属软件模块定位分析:review核函数代码,可借助MXMACA SDK的trap工具和打印详情辅助分析,也可以到沐曦开发者社区寻求更多帮助

0x3111

核函数存在除零操作(divide 0)

GPU因Numeric异常短暂停止服务,相关信息收集完毕后,用户程序继续执行。

说明:这部分EID仅在开启Numeric异常( export MACA_TRAP_HANDLER=2),才会在执行相关问题的核函数时触发SDK EID打印。

EID打印的核函数所属软件模块定位分析:review核函数代码,可借助MXMACA SDK的trap工具和打印详情辅助分析,也可以到沐曦开发者社区寻求更多帮助

必要时使用精度和Loss异常分析与排查手段,包括但不限于:

  • 硬件层诊断:

    1)使用mx-smi检查GPU温度、功耗是否超限

    2)运行硬件诊断工具(如 mx-diagease)检测显存错误或PCIe/MetaxLink/IB/RoCE通信故障

  • 软件层数据检查:

    1)验证输入数据是否存在异常值(如文本中的 \0、图像中的全黑帧)

    2)检查数据预处理逻辑(如归一化分母为0、数据增强越界)

  • 软件层模型检查:

    1)使用 torch.autograd.detect_anomaly() 定位反向传播中的NaN来源

    2)检查自定义算子(如MXMACA Kernel)的数值稳定性(边界条件、除零风险)

  • 软件层优化器配置:

    1)降低学习率或启用梯度裁剪(torch.nn.utils.clip_grad_norm_

    2)混合精度训练(AMP)中调整 loss_scale 防止溢出

  • 软件层设计检查与优化策略调整:

    1)数值稳定性设计,例如在损失函数中添加微小epsilon(如 x += 1e-8)避免除零,使用 torch.isnan(tensor).any() 在关键计算后主动检查张量等

    2)混合精度训练防护,例如启用AMP的 autocastGradScaler,动态调整缩放因子

    3)数据预处理兜底,例如数据加载时强制 np.nan_to_num(),过滤异常样本

0x3112

核函数存在数据上溢

(data overflow)

0x3113

核函数存在数据下溢

(data underflow)

0x3114

核函数存在无效操作(invalid operation,如NaN/Not a Number,未定义或不可表示的值)

0x3115

核函数输入了非规约数

(input denormal)

0x3116

核函数数据出现了精度损失(Inexact)

此EID仅在开启Numeric异常( export MACA_TRAP_HANDLER=3 )时,执行相关问题的核函数才会触发SDK EID打印

0x3211

  1. 核函数死循环

  2. 并行流上的两个任务有依赖关系,被MXMACA SDK默认配置算法分配到同一个ring-buffer串行执行

  3. 核函数超时门限设置太低(误报)

用户进程可能Hang,可能需运维干预

根据EID打印的Hang详情日志文件定位分析

0x3212

  1. 硬件PCIe超时

  2. 数据拷贝超时门限设置太低(误报)

0x3213

  1. 可能是瞬时大量核函数下发引起,程序会继续运行,无异常

  2. 有个别情况可能存在被依赖的核函数无法下发,应用程序Hang

用户进程可能Hang,可能需要运维干预

必要时通过设置环境变量 MACA_RING_BUFFER_SIZE 解决