昇腾故障案例详情页

快速定位npu-smi报错dcmi module initialize failed, ret is -8005

更新时间: 2024/02/22

暂无评分

问题信息

问题来源产品大类产品子类关键字
官方安装部署驱动固件npu-smi、dcmi module、8005

问题现象描述

npu-smi报错dcmi module initialize failed, ret is -8005

原因分析及解决措施

  • 当前环境中的卡未烧写efuse安全启动,而安装包带安全启动。
    确认方法
    1. 执行/usr/local/Ascend/driver/tools/msnpureport导出device侧日志,参考msnpureport工具参考
    2. 进入“{$时间戳}/hisi_logs/device-0/{时间戳}/snapshot”路径查看“dhr.log”内是否有“non-sec boot! ”字样。
    3. 如果有说明该卡没有烧写efuse安全启动,安装添加安全启动签名的包是无法加载卡驱动的。

    解决措施

    请参考[解决方法]

  • linux内核被不经意升级后,驱动跟现有内核版本不匹配导致。

    确认方法

    1. 在IBMC确认是否有两个内核,或者在路径/usr/src下直接查看内核文件版本是否有两个及以上。
    2. 执行uname -r确认现内核版本。
    3. 打开ascend安装记录“/var/log/ascend_seclog/ascend_install.log”查看驱动安装时的内核版本。
    4. 若3中内核版本与2中不一致,则可以确认linux内核被升级后驱动跟现有内核版本不匹配导致。

    解决措施

    1. 重装驱动,驱动会自动rebuild对现有的内核版本适配安装。
    2. 直接安装内核头。

      yum install kernel-devel #Cento

      apt-get install -y linux-source #Ubantu

    3. 为防止随意非主观apt更新内核版本;永久在宿主机上规避这类问题产生,参考如何阻止apt更新Linux内核
  • docker环境下发生,可能映射过来的npu卡被占用,且npu卡未设置共享模式(D710暂时不支持)。

    确认方法

    1. docker容器环境下发生,且环境上有其他容器运行,(或其他容器启动进程未终止)。
    2. 用容器/镜像的元数据来排查卡是否被占用。

      docker inspect {$CONTAINER ID} | grep "ASCEND_VISIBLE_DEVICES"

      或执行以下脚本查询宿主机上所有docker对昇腾卡占用情况。

      if [ $(docker ps | wc -l) -gt 1 ]; then docker ps | grep -v CONT | awk '{print $1}' | xargs docker inspect --format='{{printf "%.5s" .ID}} {{range .HostConfig.Devices}}{{.PathOnHost}} {{end}}' | sort -k2; fi; echo ok

      CONTAINER ID 通过docker ps 获取,如本次挂载的是宿主机npu物理卡0,那么如果其他容器中inspect过滤出的ASCEND_VISIBLE_DEVICES字段中但凡有0或者0~x区间就可以确定是被占用所导致的。

    解决措施

    查看使用卡的型号是否支持npu共享模式,如果不,那就只能两个容器二选一,或者做卡的切分操作(谨慎使用)。

本页内容

该页面对您有帮助吗?
我要评分