KMD安装指南

更新时间:
复制为 MD 格式

概述

PPU KMD (Kernel Mode Driver)是PPULinux内核驱动组件,本文主要介绍用户如何下载/安装PPU KMD组件。目前PPU内核驱动支持两种安装包:一种是rpmdeb二进制包的安装形式,针对常用的ubuntu、centos、alios、alinux系统以及不同的Linux内核版本我们提供了相应的二进制安装包;另一种是runfile包的安装形式,不同于前面的二进制包,runfile包中则包含了部分依赖linux内核的源文件,需要在用户本地环境中进行编译之后进行安装。

下载与安装

本步骤以PPU v1.0版本为例
  1. 发布页面的制品说明中选取对应的版本。

  2. 进入如下下载页面。

    https://aliyuque.antfin.com/alinpu_engineering/snxi21/fi6gs2hgwcdr022b
  3. 根据操作系统和Linux内核版本找到对应的rpmdeb包下载,如果发现自己的操作系统和Linux内核版本不在支持的列表内,可以下载alippu-driver-xxx.run 安装包,其中xxx代表驱动的版本号。

KMD安装

KMD安装需要用户账号为root或者具有sudo权限。

rpm

#举例
sudo rpm --force -ivh --nodeps alippu-driver-5.10.134-13.al8.x86_64.rpm

结果判定:

成功安装,命令打印 install successful。
#sudo rpm --force -ivh --nodeps alippu-driver-5.10.134-13.al8.x86_64.rpm
Verifying...                          ################################# [100%]
Preparing...                          ################################# [100%]
Updating / installing...
   1:alippu-driver-1.0.0-1            ################################# [100%]
install successful

deb

#举例
sudo dpkg -i --force-overwrite alippu-driver-4.18.0-15-generic-1.0.0-d4d6ec.deb

结果判定:

成功安装,命令打印 install successful。
#sudo dpkg -i --force-overwrite alippu-driver-4.18.0-15-generic-1.0.0-d4d6ec.deb
Preparing to unpack alippu-driver-4.18.0-15-generic-1.0.0-d4d6ec.deb ...
Unpacking alippu-driver (1.0.0) over (1.0.0) ...
dpkg: warning: overriding problem because --force enabled:
dpkg: warning: trying to overwrite '/usr/bin/ppudbg', which is also in package fw 1.5.7
dpkg: warning: overriding problem because --force enabled:
dpkg: warning: trying to overwrite '/usr/local/bin/ppudbg', which is also in package fw 1.5.7
uninstall successful
Setting up alippu-driver (1.0.0) ...
install successful

runfile

#举例
chmod +x alippu-driver-xxx.run
sudo ./alippu-driver-xxx.run

结果判定:

相比于 rpm 包和 deb 包,runfile 包多了一个编译过程,如果结果为 run succeed,说明安装成功。
#sudo ./alippu-driver-xxx.run
KERNELDIR=/lib/modules/4.18.0-15-generic/build /bin/sh conftest.sh                                                                                                                            
'kallsyms_lookup_name is available'
make  -C /lib/modules/4.18.0-15-generic/build M=/tmp/kmd_setup/drm/alipci modules                                                                                                             
make[1]: Entering directory '/usr/src/linux-headers-4.18.0-15-generic'                                                                                                                        
Makefile:970: "Cannot use CONFIG_STACK_VALIDATION=y, please install libelf-dev, libelf-devel or elfutils-libelf-devel"
  CC [M]  /tmp/kmd_setup/drm/alipci/alipci_drv.o                                                                                                                                              
  CC [M]  /tmp/kmd_setup/drm/alipci/alipci_lvmg.o                                                                                                                                             
  CC [M]  /tmp/kmd_setup/drm/alipci/alipci_sysfs.o
  CC [M]  /tmp/kmd_setup/drm/alipci/alipci_ctx.o                                                                                                                                              
  CC [M]  /tmp/kmd_setup/drm/alipci/alipci_print.o                                                                                                                                            
  LD [M]  /tmp/kmd_setup/drm/alipci/alipci.o
  Building modules, stage 2.                                                                                                                                                                  
  MODPOST 1 modules
  CC      /tmp/kmd_setup/drm/alipci/alipci.mod.o                                                                                                                                              
  LD [M]  /tmp/kmd_setup/drm/alipci/alipci.ko
...
make[1]: Leaving directory '/usr/src/linux-headers-4.18.0-15-generic'
alixpu not exist
alipci not exist
run succeed

dmesg日志

deb 包、rpm 包和 runfile 包安装过程中的 dmesg 日志是相同的,如下所示:

[56215.515352] [alixpu] ppu7, ring:icn_v1_0_12 raw test successfully!
[56215.531353] [alixpu] ppu7, ring:icn_v1_0_13 raw test successfully!
[56215.543360] [alixpu] ppu7, ring:icn_v1_0_14 raw test successfully!
[56215.555354] [alixpu] ppu7, ring:icn_v1_0_15 raw test successfully!
[56215.555365] [alixpu] c2c dma test from PPU[0] to PPU[1]
[56216.587357] [alixpu] ppuid:0, ring:icn_v1_0_0 c2c test successfully!
[56216.587362] [alixpu] c2c dma test from PPU[1] to PPU[0]
[56217.611353] [alixpu] ppuid:1, ring:icn_v1_0_0 c2c test successfully!
[56217.611358] [alixpu] c2c dma test from PPU[2] to PPU[0]
[56218.635359] [alixpu] ppuid:2, ring:icn_v1_0_0 c2c test successfully!
[56218.635366] [alixpu] c2c dma test from PPU[3] to PPU[0]
[56219.659355] [alixpu] ppuid:3, ring:icn_v1_0_0 c2c test successfully!
[56219.659362] [alixpu] c2c dma test from PPU[4] to PPU[0]
[56220.683351] [alixpu] ppuid:4, ring:icn_v1_0_0 c2c test successfully!
[56220.683358] [alixpu] c2c dma test from PPU[5] to PPU[0]
[56221.707360] [alixpu] ppuid:5, ring:icn_v1_0_0 c2c test successfully!
[56221.707379] [alixpu] c2c dma test from PPU[6] to PPU[0]
[56222.731358] [alixpu] ppuid:6, ring:icn_v1_0_0 c2c test successfully!
[56222.731365] [alixpu] c2c dma test from PPU[7] to PPU[0]
[56223.755356] [alixpu] ppuid:7, ring:icn_v1_0_0 c2c test successfully!
[56223.755563] [alixpu] total 8 devices in ICN topo!

版本确认

运行ppu-smi工具,会打印出对应的PPU信息,其中Driver Version是对应的PPU KMD版本信息,如下所示:

$ ppu-smi
Tue Aug 15 12:02:42 2023
+-------------------------------------------------------------------------------+
| PPU-SMI 1.4           Driver Version: 1.0.0-d4d6ec  HGGC Version: 11.1         |
+---------------------------------+----------------------+----------------------+
| PPU  Name        Persistence M. | Bus-Id               | Volatile Uncorr. ECC |
| Fan  Temp  Perf   Pwr:Usage/Cap | Memory-Usage         | PPU-Util  Compute M. |
|                                 |                      |               MIG M. |
+=================================+======================+======================+
| 0  PPU-ZW610         N/A        | 00000000:00:11.0     |                    0 |
| N/A  41C   N/A      130W / 300W | 5MiB / 48768MiB      |   0%        Default  |
|                                 |                      |             Disabled |
+---------------------------------+----------------------+----------------------+

+-------------------------------------------------------------------------------+
| Processes:                                                                    |
| PPU    GI   CI   PID      Type  Process name                       PPU Memory |
|        ID   ID                                                     Usage      |
+===============================================================================+
| No running processes found                                                    |
+-------------------------------------------------------------------------------+