工作的需要安装了 Ascend 310的加速卡,其中遇到了一下坑,记录一下,避免大家再次入坑

1. 使用OpenEuler 2203-SP4,内核没有找到对应的5.15.0-25-generic, 编译时报告系统的内核版本和驱动的内核版本不兼容,失败!(后来使用OpenEuler 2203 LTS,安装驱动成功)

2. 使用了Ubuntu 2402LTS,结果还是内核版本出幺蛾子,再次放弃

3. 最后为了还是选择了22.04:5.15.0-25-generic

具体的安装步骤如下

1. 安装 dkms (这一步在手册中没有提及,我第一次安装也是遇到了内核不兼容的问题)

sudo apt install dkms

2. 修改内核文件

cd /usr/src/linux-headers-5.15.0-25-generic/scripts/mod/

sudo vi modpost.c

2601行 : error -> warn

        for (n = 0; n < SYMBOL_HASH_SIZE; n++) {
                struct symbol *s;

                for (s = symbolhash[n]; s; s = s->next) {
                        if (s->is_static)
                                warn("\"%s\" [%s] is a static %s\n",
                                      s->name, s->module->name,
                                      export_str(s->export));
                }
        }
3. 重新编译

sudo gcc modpost.c -o modpost sumversion.c file2alias.c

4. 安装编译的依赖文件

sudo apt-get install -y build-essential gcc g++ make cmake zlib1g zlib1g-dev libsqlite3-dev openssl libssl-dev libffi-dev unzip pciutils net-tools libblas-dev gfortran dkms libblas3 libopenblas-dev libstdc++-12-dev

如果是OpenEuler,使用下面的命令

 yum install -y gcc gcc-c++ make cmake zlib zlib-devel sqlite-devel openssl-devel libffi-devel unzip pciutils net-tools blas-devel gcc-gfortran dkms openblas-devel libstdc++-devel
 

5. 添加用户组和用户

sudo groupadd HwHiAiUser

sudo useradd -g HwHiAiUser -d /home/HwHiAiUser -m HwHiAiUser -s /bin/bash

6. 创建编译目录

mkdir -p /usr/local/software/system

cd /usr/local/software/system

7. 把Ascend hdk 文件传到上述目录

具体的文件,可以从此处获得:

链接:https://pan.baidu.com/s/1HEKdTfHRZ_L7JHC1kO-zGQ?pwd=ojta  

提取码:ojta

8. 安装驱动

sudo ./Ascend-hdk-310b-npu-driver_23.0.5_linux-x86-64.run --full

9. 升级固件

sudo ./Ascend-hdk-310b-npu-firmware_7.1.0.7.220.run --full

10. 禁止内核自动升级

cd /etc/apt/apt.conf.d/

执行命令:

sudo vi /etc/apt/apt.conf.d/20auto-upgrades

将其中的 `Unattended-Upgrade "1";` 改为 `Unattended-Upgrade "0";`以禁用自动更新。保存文件并退出。

sudo vi /etc/apt/apt.conf.d/10periodic

修改文件以将所有选项设置为 `0`;

11. 如果内核版本已经升级了,用如下的命令查看旧版本是否还存在

dpkg -l | grep '^ii' | grep linux-image- | awk '{print $2}'

12. 修改启动的default 内核版本,换成旧的内核 5.15.0-25-generic

sudo vi /etc/default/grub

GRUB_DEFAULT="Advanced options for Ubuntu>Ubuntu, with Linux 5.15.0-25-generic"

sudo update-grub

sudo update-grub && sudo reboot now

13. 启动后查看内核是否已经改变

sudo uname -r

14. CANN的安装步骤
Ubuntu

https://www.hiascend.com/document/detail/zh/canncommercial/700/envdeployment/instg/instg_0028.html

OpenEuler

https://www.hiascend.com/document/detail/zh/canncommercial/700/envdeployment/instg/instg_0030.html

15. 在昇腾AI处理器上安装CANN开发套件与二进制算子的完整指南

本文旨在为开发者提供在昇腾AI处理器(特别是ARM平台)上安装华为CANN(Compute Architecture for Neural Networks)开发套件及其二进制算子的详细步骤。CANN是昇腾AI处理器的异构计算架构,支持开发者进行高效的人工智能应用开发与部署。以下流程基于官方文档与社区实践整理,适用于Atlas系列开发板或服务器。

16. 安装前的环境检查与准备

在开始安装前,必须确保目标设备(板端)的昇腾AI处理器(NPU)驱动与固件已正确安装并运行正常。这是CANN软件栈正常运行的基础。对于Atlas 800训练服务器等设备,可以通过执行lspci | grep d801命令来检查NPU是否在位,回显的行数对应NPU的数量

。同时,请确认安装目录(如/usr/local/software/CANN)有足够的可用空间,官方建议安装Toolkit软件前确保空间大于9G。此外,系统应已安装必要的依赖,例如对于Ubuntu/Debian系系统,需安装gcc、make、python3等工具。

17. 安装CANN开发套件软件包(Toolkit)

开发套件包(Ascend-cann-toolkit)包含了进行应用开发和自定义算子开发所需的库文件、头文件及工具。请遵循以下步骤进行安装:

  1. 上传软件包:将获取的ARM平台开发套件软件包(例如Ascend-cann-toolkit_7.0.1.1_linux-x86_64.run)上传至板端的/usr/local/software/CANN目录下。若目录不存在,请使用mkdir -p命令创建。
  2. 进入目录并授权:使用cd /usr/local/software/CANN命令进入该目录,然后执行chmod +x Ascend-cann-toolkit_7.0.1.1_linux-x86_64.run为软件包增加可执行权限。
  3. 校验软件包:执行./Ascend-cann-toolkit_7.0.1.1_linux-x86_64.run --check命令,校验安装文件的一致性和完整性,这是确保安装过程无误的重要一步。
  4. 执行安装:运行./Ascend-cann-toolkit_7.0.1.1_linux-x86_64.run --install命令开始安装。安装过程中,终端会显示华为企业业务最终用户许可协议(EULA),需要用户输入“y”或“Y”接受协议才能继续。安装过程可能需要连接网络以下载部分依赖。
  5. 验证安装:安装成功后,终端会显示“Ascend-cann-toolkit install success”的提示信息。默认安装路径为/usr/local/Ascend/ascend-toolkit
18. 安装二进制算子包(Kernels)

二进制算子包(Ascend-cann-kernels)包含了针对特定昇腾AI处理器(如昇腾310P)优化的预编译算子库,对于模型推理性能至关重要。安装顺序应在Toolkit之后

  1. 上传软件包:将二进制算子包(例如Ascend-cann-kernels-310p_7.0.1.1_linux.run)同样上传至/usr/local/software/CANN目录。
  2. 授权并安装:在相同目录下,执行chmod +x Ascend-cann-kernels-310p_7.0.1.1_linux.run增加权限,然后运行./Ascend-cann-kernels-310p_7.0.1.1_linux.run --install进行安装。同样,安装过程中需要接受EULA协议。
  3. 验证安装:安装成功后会显示类似“Ascend-cann-kernels-310p install success”的回显。该软件包默认会被安装到Toolkit目录下的特定路径:/usr/local/Ascend/ascend-toolkit/latest/opp/built-in/op_impl/ai_core/tbe/kernel
19. 配置系统环境变量

为了使系统能够正确找到CANN的库文件和工具,必须配置环境变量。永久性配置可通过修改用户家目录下的.bashrc文件实现。

  1. 配置CANN基础环境:使用vi ~/.bashrc命令编辑文件,在文件末尾添加一行:source /usr/local/Ascend/ascend-toolkit/set_env.sh。该命令会加载CANN Toolkit预设的所有必要环境变量。
  2. 配置开发特定环境(可选但推荐):对于需要进行深度开发的用户,通常还需要设置一些额外的变量。在.bashrc文件中继续添加以下内容,这些变量定义了Python环境、DDK路径和第三方库路径,对于编译和运行样例代码非常重要:
    
      
    export CPU_ARCH='arch' # 请根据实际架构替换,如aarch64或x86_64
    export LD_LIBRARY_PATH=/usr/local/python3.9.2/lib:$LD_LIBRARY_PATH
    export PATH=/usr/local/python3.9.2/bin:$PATH
    export DDK_PATH=/usr/local/Ascend/ascend-toolkit/7.0.1.1 # 指向您的具体版本号路径
    export NPU_HOST_LIB=$DDK_PATH/runtime/lib64/stub
    export THIRDPART_PATH=${DDK_PATH}/thirdpart
    export LD_LIBRARY_PATH=${THIRDPART_PATH}/lib:$LD_LIBRARY_PATH
    umask 0027
    
    注意:/usr/local/python3.9.2是示例路径,请确保其与您系统中Python3的实际安装路径一致。
  3. 使配置生效:保存并退出.bashrc文件(在vi编辑器中按Esc后输入:wq!)。然后执行source ~/.bashrc命令,使环境变量在当前终端立即生效。之后新打开的终端也会自动加载这些配置。
20. 运行代码与验证安装

完成所有安装和配置后,即可开始运行或开发昇腾AI应用。

  1. 切换权限与加载环境:登录设备后,如需root权限,可执行sudo -s。然后,务必执行source /usr/local/Ascend/ascend-toolkit/set_env.sh以确保当前会话的环境变量已正确加载。如果已将其加入.bashrc,则打开新终端时会自动加载。
  2. 验证安装:可以通过运行CANN提供的示例代码来验证环境是否搭建成功。此外,一个简单的检查方法是查看安装信息文件,例如执行cat /usr/local/Ascend/ascend-toolkit/latest/x86_64-linux/ascend_toolkit_install.info
  3. 解决常见库问题:如果在运行程序时遇到类似“libascend_hal.so: cannot open shared object file”的错误,说明系统动态链接库路径未包含该库。解决方法通常是找到该库文件(通常在$DDK_PATH/runtime/lib64/stub/$DDK_PATH/x86_64-linux/devlib/目录下),并将其拷贝到系统库目录(如/usr/local/lib/),并在/etc/ld.so.conf文件中添加该库路径,最后执行ldconfig命令更新缓存。

通过以上步骤,您应该已经成功在ARM平台的昇腾设备上搭建好了CANN开发与运行环境,可以着手进行AI模型的应用开发或部署了。请注意,不同版本的CANN软件包在细节上可能略有差异,请以所下载版本对应的官方安装指南为准。

Logo

鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。

更多推荐