昇腾310P软件安装说明
一、背景介绍
近期项目中要使用华为的310P AI推理模组,该模组作为EP端通过PCIE x16连接主处理器D3000。为此需要再D3000系统下进行310P的设备驱动安装操作。
二、驱动安装
1、创建运行用户和组
$ groupadd HwHiAiUser
$ useradd -g HwHiAiUser -d /home/HwHiAiUser -m HwHiAiUser -s /bin/bash
2、检查系统环境
查看是否安装make
$ make --version
检查是否安装dkms、gcc、linux-header
$ rpm -qa | grep dkms
$ rpm -qa | grep gcc
$ rpm -qa | grep kernel-devel-$(uname -r)
3、安装驱动
请移动到驱动包保存目录下,驱动安装包格式一般为
Ascend-hdk-310p-npu-driver_x.x.x_linux-{arch}.run
为安装包添加权限
$ chmod +x Ascend-hdk-310p-npu-driver_x.x.x_linux-{arch}.run
检查安装包的完整性
$ ./Ascend-hdk-310p-npu-driver_x.x.x_linux-{arch}.run --check
安装驱动
$ ./Ascend-hdk-310p-npu-driver_x.x.x_linux-{arch}.run --full
检查驱动是否安装成功
$ npu-smi info
若正常回显,则安装成功。
注:如果安装过程中出现了OS兼容性问题,需要手动将系统内核源码中的Makefile里的警告关闭,Makefile一般在/usr/src/linux-headers-$(uname -r)
下,修改Makefile如下
使用vi / vim打开Makefile;
搜索关键词Wall;
在Wall所在字段的末尾添加 -w;
保存后重新安装驱动
4、安装固件
若npu执行正常,则无需重新安装固件
固件安装包的命名格式一般为
Ascend-hdk-310p-npu-firmware_x.x.x.x.X.run
同驱动安装一样,先check,再full,如果返回successful,则安装成功
三、开发工具安装
1、安装CANN软件包
CANN开发包的命名格式为Ascend-cann-toolkit_{version}_linux-{arch}.run
为软件包添加执行权限
$ chmod +x Ascend-cann-toolkit_{version}_linux-{arch}.run
$ ./Ascend-cann-toolkit_{version}_linux-{arch}.run --check
若返回正常,则执行安装
$ ./Ascend-cann-toolkit_{version}_linux-{arch}.run --install
返回success则表示安装成功
安装路径默认在/usr/local/Ascend/ascend-toolkit
配置环境变量
$ source /usr/local/Ascend/ascend-toolkit/set_env.sh
或者将 source /usr/local/Ascend/ascend-toolkit/set_env.sh写入~/.bashrc中
2、安装算子包
算子包的命名格式一般为Ascend-cann-kernels-{chip_type}_{version}_linux.run
为软件包添加权限
$ chmod +x Ascend-cann-kernels-{chip_type}_{version}_linux.run
检查安装包的完整性
$ ./Ascend-cann-kernels-{chip_type}_{version}_linux.run --check
安装
$ ./Ascend-cann-kernels-{chip_type}_{version}_linux.run --install
默认情况下,算子包会安装到ascend-toolkit下
/usr/local/Ascend/ascend-toolkit/latest/opp/built-in/op_impl/ai_core/tbe/kernel
3、安装运行环境
注:如果用户开发环境和运行环境为同一环境下,可以忽略
运行环境可以视功能性的不同来选择使用nnae或者nnrt
NNRT支持模型在NPU上的离线推理
NNAE则支持模型在NPU上的在线训练与离线推理
由于310P只能用来离线推理,因此安装NNRT即可
NNRT软件包的命名格式一般为Ascend-cann-nnrt_{version}_linux-{arch}.run
检查安装包的完整性
$ ./Ascend-cann-nnrt_{version}_linux-{arch}.run --check
安装
$ ./Ascend-cann-nnrt_{version}_linux-{arch}.run --full
安装算子包,这里增加安装时类型
获取算子包Ascend-cann-kernels-{chip_type}_{version}_linux.run
检查安装包完整性
$ ./Ascend-cann-kernels-{chip_type}_{version}_linux.run --check
安装
$ ./Ascend-cann-kernels-{chip_type}_{version}_linux.run --full --type=nnrt
4、安装程序开发第三方库
首先配置系统环境,方便程序编译启动
$ vi ~/.bashrc$ export CPU_ARCH=`arch`$ export THIRDPART_PATH=/usr/local/Ascend/thirdpart/${CPU_ARCH}$ export LD_LIBRARY_PATH=${THIRDPART_PATH}/lib:$LD_LIBRARY_PATH$ export INSTALL_DIR=/usr/local/Ascend/ascend-toolkit/latest
执行
$ source ~/.bashrc
使修改的系统变量生效
创建第三方库目录
$ mkdir -p ${THIRDPART_PATH}
解压samples-master.zip到用户指定目录
$ unzip samples-master.zip
将程序运行脚本添加到THIRDPART_PATH中
$ cp -r /path/to/samples-master/common ${THIRDPART_PATH}
- 安装X264媒体库
获取X264源码包x264-master.tar.gz
解压
$ tar zxvf x264-master.tar.gz$ cd x264-master
安装x264
$ ./configure --enable-shared --disable-asm$ make -j64$ make install$ cp /usr/local/lib/libx264.so.164 /lib
- 安装FFmpeg
在安装FFmpeg之前首先需要检查系统内是否安装SDL2媒体开发库
$ rpm -qa | grep SDL2
如果没有,提供离线安装方式,首先获取SDL2离线安装包SDL2-2.0.14.tar.gz
解压
$ tar zxvf SDL2-2.0.14.tar.gz$ cd SDL2-2.0.14$ ./configure -prefix=/usr$ make -j64$ make install$ rm -vf /usr/lib/libSDL2*.a
安装ffmpeg
获取ffmpeg源码包ffmpeg-4.1.3.tar.gz
$ tar -zxvf ffmpeg-4.1.3.tar.gz$ cd ffmpeg-4.1.3
安装ffmpeg
$ ./configure --enable-shared --enable-pic --enable-static --disable-x86asm --enable-libx264 --enable-gpl --prefix=${THIRDPART_PATH}$ make -j64$ make install
- 安装OpenCV
获取OpenCV源码包opencv-4.9.0.tar.gz
$ tar zxvf opencv-4.9.0.tar.gz$ cd opencv-4.9.0$ mkdir build && cd build$ cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D
CMAKE_PREFIX_PATH=${THIRDPART_PATH} -D WITH_STREAMER=ON -D WITH_CANN=ON -D BUILD_OPENCV_HIGHGUI=ON ..$ make -j64$ make install$ ln -s /usr/local/include/opencv4/opencv2 /usr/local/include/opencv2
编辑~/.bashrc
将/usr/local/lib添加到LD_LIBRARY_PATH
$ export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
- 安装acllite
编译并安装acllite
$ cd /samples/cplusplus/common/acllite$ make -j64$ make install
- 安装presentagent
获取protobuf源码protobuf.tar.gz
编译安装protobuf
$ tar zxvf protobuf.tar.gz$ cd protobuf$ ./autogen.sh$ ./configure --prefix=${THIRDPART_PATH}$ make clean$ make -j64$ make install
进入presentagent源码目录并编译
$ cd /path/to/samples/cplusplus/common/presenteragent/proto$ ${THIRDPART_PATH}/bin/protoc presenter_message.proto --cpp_out=./
开始编译presentagnet
$ cd ..$ make -j64$ make install
四、固件在线更新
310P的固件可以在linux系统下面在线更新,注意先升级固件再升级驱动,执行下面操作
固件升级
./Ascend-hdk-310p-npu-firmware_7.6.t7.0.b052.run --upgrade
然后再升级驱动
./Ascend-hdk-310p-npu-driver_24.1.t35_linux-aarch64.run --upgrade
五、运算性能测试
310P目前只支持int8和fp16两种类型的数据进行运算性能测试
ascend-dmi -f -t int8
ascend-dmi -f -t fp16
