下载
EN
注册

安装NPU驱动固件

确认OS和内核版本

执行如下命令查看现场服务器OS和内核版本,并和华为的版本要求进行对比。
uname -m && cat /etc/*release
uname -r

OS内核版本和对应的安装方式如表1所示。有以下场景:

  • 直接安装NPU驱动固件
  • 修改驱动包后安装NPU驱动固件
  • 不在适配表中的OS,请按照安装OS(可选)重新安装OS。
表1 适配的OS和内核版本

OS版本

内核版本

安装NPU驱动方式

openEuler 22.03 LTS

5.10.0-60.18.0.50.oe2203

直接安装

Ubuntu 18.04.4

4.19.90+

Ubuntu 18.04.5

4.15.0-159

Ubuntu 18.04.6

4.15.0-212

5.4.0-152

Ubuntu 20.04

5.4.0-26

Ubuntu 20.04.4

5.13.0-30

修改驱动包可安装

Ubuntu 20.04.5

5.15.0-58

Ubuntu 20.04.6

5.15.0-76

5.4.0-186

Ubuntu 22.04

5.4.0-182

Ubuntu 22.04.2

5.15.0-60

Ubuntu 22.04.2

6.5.0-44

内核版本降至5.15.0-119,再修改驱动可安装

Ubuntu 22.04.4

6.5.0-45

内核版本降至5.15.0-97,再修改驱动包可安装

安装NPU驱动固件

  1. root用户登录服务器。

    详细操作可参考远程登录服务器和上传文件

  2. 创建驱动运行用户HwHiAiUser(运行驱动进程的用户),安装驱动时无需指定运行用户,默认即为HwHiAiUser。
    groupadd HwHiAiUser
    useradd -g HwHiAiUser -d /home/HwHiAiUser -m HwHiAiUser -s /bin/bash
  3. 安装驱动源码编译所需依赖。
    • Ubuntu系统

      需要安装make、dkms、gcc、linux-header驱动源码编译所需依赖。

      1. 执行如下命令检查是否安装:
        make -v
        dpkg-query -s dkms
        dpkg-query -s gcc
        dpkg-query -s linux-headers-$(uname -r)
      2. 若回显相关软件包版本信息,表示已安装;若未安装请执行如下命令安装依赖。
        apt-get install -y make dkms gcc linux-headers-$(uname -r)
    • openEuler 22.03 LTS

      需要安装make、dkms、gcc、kernel-devel软件包。

      1. 执行如下命令检查是否安装:
        make -v
        rpm -qa | grep dkms
        rpm -qa | grep gcc
        rpm -qa | grep kernel-devel-$(uname -r)
      2. 若回显相关软件包版本信息,表示已安装;若未安装请执行如下命令安装依赖。
        yum install -y make dkms gcc kernel-devel-$(uname -r)
  4. 将驱动包和固件包上传到服务器任意目录如“/home”。可参见文件上传上传文件。
  5. 增加驱动和固件包的可执行权限。
    进入驱动包和固件包所在目录,执行如下命令。
    chmod +x Ascend-hdk-310p-npu-driver_24.1.rc3_linux-aarch64.run
    chmod +x Ascend-hdk-310p-npu-firmware_7.5.0.1.129.run
    进入驱动包和固件包所在目录,执行如下命令。
    chmod +x Ascend-hdk-310p-npu-driver_24.1.rc3_linux-x86-64.run
    chmod +x Ascend-hdk-310p-npu-firmware_7.5.0.1.129.run
  6. 执行以下命令,完成驱动固件安装,软件包默认安装路径为“/usr/local/Ascend”
    首次安装场景,需按照“驱动 > 固件”的顺序安装驱动固件;覆盖安装场景,需按照“固件 > 驱动”的顺序安装固件驱动。
    • 安装驱动
      执行以下命令,完成驱动安装。
      ./Ascend-hdk-310p-npu-driver_24.1.rc3_linux-aarch64.run --full --install-for-all
      执行以下命令,完成驱动安装。
      ./Ascend-hdk-310p-npu-driver_24.1.rc3_linux-x86-64.run --full --install-for-all
      • 若执行上述安装命令出现类似如下回显信息,请参见驱动安装缺少依赖报错解决。
        [ERROR]The list of missing tools: lspci,ifconfig,
      • 若执行上述安装命令出现类似如下回显信息,请参见驱动安装过程中出现dkms编译失败报错解决。
        [ERROR]Dkms install failed, details in : var/log/ascend_seclog/ascend_install.log. 
        [ERROR]Driver_ko_install failed, details in : /var/log/ascend_seclog/ascend_install.log.
      • 若执行上述安装命令出现类似如下回显信息,请参见安装驱动路径不属于root解决。
        [ERROR]The given directory, including its parents, should belong to root, details in : var/log/ascend_seclog/ascend_install.log. 
      • 若系统出现如下关键回显信息,则表示驱动安装成功。
        Driver package installed successfully!
    • 安装固件
      执行以下命令,完成固件安装。
      ./Ascend-hdk-310p-npu-firmware_7.5.0.1.129.run --full

      若系统出现如下关键回显信息,表示固件安装成功。

      Firmware package installed successfully! Reboot now or after driver installation for the installation/upgrade to take effect 
  7. 执行reboot命令重启系统,使NPU驱动固件生效。
  8. 重启系统后,以root用户登录服务器。
  9. 执行npu-smi info查看驱动加载是否成功。

    若出现类似如下图所示回显信息,说明加载成功。否则,说明加载失败。请联系华为技术支持处理。

    Ubuntu 22.04.x在使用官方源或外部源时默认开启内核更新功能,安装部分软件包将自动升级内核到源里的新版本,在当前内核版本作为使用场景时,需要在软件安装后对内核版本进行锁定。

    执行如下命令锁定内核(命令中的5.15.0-94版本仅为示例)。

    apt-mark hold linux-image-5.15.0-94-generic linux-headers-5.15.0-94-generic linux-modules-5.15.0-94-generic linux-modules-extra-5.15.0-94-generic

修改驱动包后安装NPU驱动固件

部分OS内核版本需要修改驱动包后才能安装NPU驱动固件,本文以OS内核5.15.0为例介绍修改驱动包的方法,更多案例请参见修改驱动包(内核 5.13.0)修改驱动包(内核5.4.0-198)

部分OS需要先降低内核版本,再修改驱动包后才能安装NPU驱动固件,请参见升降内核

  1. 参考1~6执行驱动安装,根据驱动安装的报错信息进行定位修改。
  2. 驱动安装时出现如图1所示报错信息。
    图1 报错信息
  3. 查看安装日志。
    cat /var/log/ascend_seclog/ascend_install.log
    图2 查看安装日志
  4. 找到错误说明,查看“make.log”
    cat /var/lib/dkms/davinci_ascend/1.0/build/make.log
    图3 查看make.log
  5. 查找“make.log”中最开始报的错误error。
    图4 报错信息1
  6. 在run包目录下,解压run包。
    ./Ascend-hdk-310p-npu-driver_24.1.rc3_linux-aarch64.run --noexec --extract=./tmp
    ./Ascend-hdk-310p-npu-driver_24.1.rc3_linux-x86-64.run --noexec --extract=./tmp
  7. 进入“tmp”目录,在“tmp/driver/kernel”中找到上述.c文件的上级目录(vmng_host),编辑其中的Makefile。 如果没有Makefile,则进入上一层目录查找。
    cd tmp/driver/kernel/vmng_host
    vi Makefile
  8. 查找ccflag(非编辑模式下,执行/ccflag命令查询),如下图所示,在行尾添加“-Wno-type-limits” (error的提示错误)。

    修改后如下图所示。

  9. 修改完后,删除上次安装残余文件。
    /usr/local/Ascend/driver/script/uninstall.sh
  10. 回到“tmp”目录下,执行如下命令安装。
    ./driver/script/install.sh -- -- --full

  11. 安装成功后,回到“tmp”上级目录,执行如下命令将修改后的tmp目录打包(5.15.0内核版本仅为示例)。
    ./Ascend-hdk-310p-npu-driver_24.1.rc3_linux-aarch64.run --repack-path=./tmp new_driver_5.15.0.run
    ./Ascend-hdk-310p-npu-driver_24.1.rc3_linux-x86-64.run --repack-path=./tmp new_driver_5.15.0.run
  12. 如果打包报错,查看报错日志。依照上述步骤处理报错。
    cat /var/log/ascend_seclog/ascend_rebuild.log
  13. 修改驱动包后参见安装NPU驱动固件,根据新的驱动包进行安装。

检查芯片温度

NPU驱动固件安装完成后,可执行如下步骤查看芯片温度是否超标,导致设备不可用或是性能下降。温度规格参考表2

  1. root用户登录服务器。
  2. 执行如下命令,查询所有芯片的温度。
    npu-smi info -t temp -i id 

    id表示设备id。通过npu-smi info -l命令查出的NPU ID即为设备id。

    命令示例如下,查询设备1的芯片温度。

    npu-smi info -t temp -i 1

    回显类似如下信息:

            NPU ID                         : 1
            Chip Count                     : 1
    
            Temperature (C)                : 44
            Chip ID                        : 0
    
            LM75A_TE (C)                   : 41
            LM75B_TE (C)                   : 36
            AICORE   (C)                   : 43
            Chip Name                      : MCU
    表2 打印信息说明

    字段

    说明

    NPU ID

    设备id

    Chip Count

    芯片个数

    Temperature (C)

    温度(单位:°C)

    102℃以下表示芯片温度正常。

    Chip ID

    芯片id

    LM75A_TE (C)

    LM75A_TE温度(单位:°C)

    LM75B_TE (C)

    LM75B_TE温度(单位:°C)

    AICORE (C)

    AICORE温度(单位:°C)

    Chip Name

    芯片名称

升级MCU

MCU是推理卡带外管理模块,具备单板监测、故障上报等功能。出厂时推理卡已集成了初始版本,为了保障所有功能正常使用,请将MCU升级到配套版本。

本节内容主要介绍通过npu-smi工具和iBMC升级MCU,npu-smi工具可以将单个推理卡的MCU升级到相应版本,如果配备了多个推理卡,需要逐个升级,iBMC可以批量升级到相应版本。

如果现场使用Atlas 800 推理服务器(型号:3000)和TaiShan 200服务器,配置Atlas 300V 视频解析卡,请通过iBMC Web界面升级。

如果现场使用第三方服务器,配置Atlas 300V 视频解析卡,请通过npu-smi工具升级。

  1. 将获取的“Ascend-hdk-310p-mcu_24.2.2zip”包解压至本地文件夹,获取安装包。

    Ascend-hdk-310p-mcu_24.2.2.hpm

  2. root用户登录服务器,将安装包上传至Linux系统任意目录下(如“/home”)。
  3. 执行npu-smi info -l命令查询NPU ID(推理卡的设备编号)。
    回显类似如下信息,NPU ID8
            Card Count                     : 1
            NPU ID                     : 8
            Product Name                   : IT21DMPB01
            Serial Number                  : 033EFS10M8000087
            Chip Count                     : 4
  4. 进入MCU软件包所在路径,执行如下命令启动升级(将NPU ID替换为3中查询到的设备编号)。
    npu-smi upgrade -t mcu -i NPU ID -f Ascend-hdk-310p-mcu_24.2.2.hpm

    出现类似如下回显表示升级成功。

    Start upgrade [100].
            Status                         : OK
            Message                        : Start device upgrade successfully
            Message                        : need active mcu
  5. 执行如下命令使新版本生效,类似以下回显表示已生效。

    npu-smi upgrade -a mcu -i NPU ID

    Status                         : OK
    Message                        : The upgrade has taken effect after performed reboot successfully.
  6. 在生效新版本之后,等待30s,查询MCU版本号,确保升级成功。
    npu-smi upgrade -b mcu -i NPU ID
    Version                        : 24.2.2
  1. 将获取的“Ascend-hdk-310p-mcu_24.2.2zip”包解压至本地文件夹,获取安装包。

    Ascend-hdk-310p-mcu_24.2.2.hpm

  2. root用户登录服务器,执行npu-smi info -l命令查询NPU ID(推理卡的设备编号)。
    回显类似如下信息,NPU ID8
            Card Count                     : 1
            NPU ID                     : 8
            Product Name                   : IT21DMPB01
            Serial Number                  : 033EFS10M8000087
            Chip Count                     : 4
  3. 在浏览器的地址栏中输入“https://iBMC管理网口IP地址”,可打开用户登录界面。

    输入“用户名”和“密码”登录iBMC Web界面。

  4. 单击“固件升级”。

  5. 选择升级文件,单击“开始升级”。

  6. 升级成功。

  7. 检查升级后的版本号。
    1. 在iBMC Web主界面导航栏中,选择“系统管理 > 系统信息”,单击“其他”。
    2. 在界面左侧选择“PCIe卡”,单击PCIe卡左方的,在打开的“扩展信息”区域查看“MCU固件版本”,如图5所示。
      图5 MCU固件版本
  • MCU新版本生效后,如需再次升级,请等待5min后再次操作。
  • 如果升级后不是目标版本或者升级失败,请重新进行升级。如果依然升级失败,请记录故障现象和操作步骤,并联系华为技术支持解决。