昇腾训练营报名链接:https://www.hiascend.com/developer/activities/cann20252#cann-camp-2502-intro

训练营简介:2025年昇腾CANN训练营第二季,基于CANN开源开放全场景,推出0基础入门系列、码力全开特辑、开发者案例等专题课程,助力不同阶段开发者快速提升算子开发技能。获得Ascend C算子中级认证,即可领取精美证书,完成社区任务更有机会赢取华为手机、平板、开发板等大奖。


前言

说到环境搭建,我第一次装CANN的时候真的是踩了一堆坑。从下载安装包找了半天,到装完发现版本不对,再到环境变量配错导致找不到库文件…整整折腾了两天才搞定。

后来在训练营老师的指导下,我重新梳理了整个流程,现在10分钟就能装好。今天就把这些经验分享给大家,让你们少走弯路。

一、硬件准备与检查

在开始之前,首先要确认你的硬件环境。CANN开发有两种模式:

1.1 有昇腾硬件(推荐)

如果你有昇腾硬件(Atlas推理卡、训练卡、开发板等),那是最好的,可以真正跑起来看效果。

检查硬件是否识别

# 查看NPU设备
npu-smi info

# 如果看到类似下面的输出,说明硬件识别正常
# +-------------------+
# | npu-smi 24.1.0    |
# +-------------------+

如果命令不存在或没有输出设备,可能是驱动没装好,需要先安装驱动firmware和driver。

1.2 没有昇腾硬件

没有硬件也能学习!CANN提供了模拟器(simulator)模式,可以在x86服务器上运行代码,虽然性能数据不准,但用来学习语法和调试逻辑完全够用。

我刚开始就是在没有硬件的情况下学的,写的代码都能跑,只是看不到真实性能而已。

二、操作系统要求

CANN对操作系统有一定要求,已验证可用的组合:

操作系统 版本 状态
Ubuntu 18.04/20.04/22.04 ✅ 完美支持
CentOS 7.6/8.2 ✅ 支持
EulerOS 2.8/2.10 ✅ 官方推荐
Windows - ❌ 不支持
macOS - ❌ 不支持

我自己用的是Ubuntu 20.04,体验最好。CentOS也可以,但有些依赖包需要手动装。

检查系统版本

# Ubuntu
cat /etc/issue
# 输出: Ubuntu 20.04.3 LTS

# CentOS
cat /etc/redhat-release
# 输出: CentOS Linux release 7.6.1810 (Core)

三、安装依赖包

在安装CANN之前,需要先装一些依赖。这一步很多人容易忽略,导致后面各种奇怪的错误。

3.1 Ubuntu系统

# 更新软件源
sudo apt update

# 安装基础依赖
sudo apt install -y gcc g++ make cmake zlib1g zlib1g-dev \
    openssl libsqlite3-dev libssl-dev libffi-dev unzip \
    pciutils net-tools libblas-dev gfortran libblas3

# 安装Python3(推荐3.7+)
sudo apt install -y python3 python3-pip python3-dev

# 验证Python版本
python3 --version
# 应该输出: Python 3.8.x 或更高版本

3.2 CentOS系统

# 安装基础依赖
sudo yum install -y gcc gcc-c++ make cmake zlib-devel \
    openssl-devel sqlite-devel libffi-devel unzip \
    pciutils net-tools blas-devel

# 安装Python3
sudo yum install -y python3 python3-pip python3-devel

四、下载CANN安装包

4.1 从官网下载

访问昇腾社区下载中心:https://www.hiascend.com/software/cann/community

下面是官方下载页面的实际截图:

CANN下载页面

选择对应版本时需要注意:

  • CANN版本:建议选最新的稳定版(如8.3.RC1)
    • alpha版本:提供新特性,供开发者提前试用
    • beta版本:核心功能完善,稳定性较高
  • CPU架构:x86_64或AArch64(根据你的服务器)
  • 芯片型号:根据你的硬件选(Atlas 300I/800/900等)
  • 操作系统:Linux(Ubuntu/CentOS/EulerOS)

需要下载的包:

  1. Ascend-cann-toolkit(必须):开发工具包
  2. Ascend-cann-kernels(必须):算子库
  3. Ascend-cann-nnae(可选):推理引擎
  4. Ascend-cann-nnrt(可选):训练引擎

我踩过的坑:第一次只下载了toolkit,没下载kernels,结果很多算子都用不了。一定要把toolkit和kernels都下载下来

4.2 使用wget下载(推荐)

官网下载有时候很慢,可以用命令行:

# 创建下载目录
mkdir -p ~/Ascend/downloads
cd ~/Ascend/downloads

# 下载toolkit(示例URL,实际请从官网获取)
wget https://ascend-repo.obs.cn-east-2.myhuaweicloud.com/CANN/CANN%208.0.RC1/Ascend-cann-toolkit_8.0.RC1_linux-x86_64.run

# 下载kernels
wget https://ascend-repo.obs.cn-east-2.myhuaweicloud.com/CANN/CANN%208.0.RC1/Ascend-cann-kernels-910b_8.0.RC1_linux.run

五、安装CANN Toolkit

5.1 给安装包添加执行权限

cd ~/Ascend/downloads
chmod +x Ascend-cann-toolkit_*.run
chmod +x Ascend-cann-kernels-*.run

5.2 安装toolkit

# 运行安装程序
./Ascend-cann-toolkit_8.0.RC1_linux-x86_64.run --install

# 安装过程中会提示选择安装路径,默认是:
# /usr/local/Ascend/ascend-toolkit/latest

# 也会问你是否安装到用户目录,我一般选择 n(系统级安装)

我踩过的坑2:第一次装的时候,磁盘空间不够导致安装失败。toolkit大概需要10GB空间,务必提前检查:

# 检查磁盘空间
df -h /usr/local

5.3 安装kernels

./Ascend-cann-kernels-910b_8.0.RC1_linux.run --install

kernels的安装路径会自动和toolkit保持一致。

六、配置环境变量(超级重要!)

这一步是90%的新手出问题的地方。我当时因为环境变量没配对,编译代码找不到头文件,调试了整整一个下午。

6.1 临时设置(测试用)

source /usr/local/Ascend/ascend-toolkit/set_env.sh

这种方式只在当前终端有效,关闭终端后就失效了。

6.2 永久设置(推荐)

编辑 ~/.bashrc 文件:

vim ~/.bashrc

在文件末尾添加:

# CANN Environment
export ASCEND_TOOLKIT_HOME=/usr/local/Ascend/ascend-toolkit/latest
source $ASCEND_TOOLKIT_HOME/set_env.sh

# Python路径(如果需要)
export PYTHONPATH=$ASCEND_TOOLKIT_HOME/python/site-packages:$PYTHONPATH

# 添加到PATH
export PATH=$ASCEND_TOOLKIT_HOME/bin:$PATH

保存后执行:

source ~/.bashrc

6.3 验证环境变量

# 检查环境变量
echo $ASCEND_TOOLKIT_HOME
# 应该输出: /usr/local/Ascend/ascend-toolkit/latest

echo $LD_LIBRARY_PATH
# 应该能看到CANN相关的路径

# 检查命令是否可用
which ascendc
# 应该输出: /usr/local/Ascend/ascend-toolkit/latest/bin/ascendc

七、验证安装是否成功

7.1 检查版本信息

# 查看CANN版本
cat /usr/local/Ascend/ascend-toolkit/latest/version.info

# 输出类似:
# Version=8.0.RC1
# Build_Time=2024-12-15

7.2 运行简单测试

CANN自带了一些sample代码,我们可以用它来测试:

# 进入samples目录
cd /usr/local/Ascend/ascend-toolkit/latest/samples/operator/AddCustom

# 如果有NPU设备
bash run.sh

# 如果没有NPU设备(使用模拟器)
bash run_cpu.sh

如果能正常运行并输出结果,说明安装成功!

7.3 测试Python环境

# 创建测试脚本 test_acl.py
import acl

# 初始化
ret = acl.init()
print(f"ACL init result: {ret}")

# 如果输出0,说明成功
if ret == 0:
    print("✅ CANN Python环境配置成功!")
    acl.finalize()
else:
    print("❌ 初始化失败")

运行测试:

python3 test_acl.py

八、安装开发IDE(可选但推荐)

8.1 MindStudio

MindStudio是华为官方提供的IDE,功能很强大:

  • 代码编辑和高亮
  • 算子开发模板
  • 可视化调试
  • 性能分析

下载地址:https://www.hiascend.com/software/mindstudio

安装步骤:

# 解压安装包
tar -zxvf MindStudio-xxx.tar.gz

# 运行安装脚本
cd MindStudio-xxx
./MindStudio.sh

8.2 VS Code(我常用的)

如果你习惯用VS Code,也可以装这些插件:

  • C/C++(微软官方)
  • Python
  • Ascend Extension(社区提供)

我个人更喜欢VS Code,因为比较轻量,而且我已经用习惯了。

九、常见问题排查

分享几个我和同学们遇到过的典型问题:

问题1:找不到libascendcl.so

报错信息

error while loading shared libraries: libascendcl.so: cannot open shared object file

原因:环境变量没配置或配置错误

解决方法

# 检查库文件是否存在
ls /usr/local/Ascend/ascend-toolkit/latest/lib64/libascendcl.so

# 如果存在,重新设置环境变量
source /usr/local/Ascend/ascend-toolkit/latest/set_env.sh

# 或者手动添加
export LD_LIBRARY_PATH=/usr/local/Ascend/ascend-toolkit/latest/lib64:$LD_LIBRARY_PATH

问题2:Python import acl失败

报错信息

ModuleNotFoundError: No module named 'acl'

解决方法

# 安装acl Python包
pip3 install /usr/local/Ascend/ascend-toolkit/latest/python/site-packages/acl-*.whl

# 或者设置PYTHONPATH
export PYTHONPATH=/usr/local/Ascend/ascend-toolkit/latest/python/site-packages:$PYTHONPATH

问题3:npu-smi命令找不到

原因:驱动没装或PATH没设置

解决方法

# 检查驱动是否安装
ls /usr/local/Ascend/driver/

# 如果没有,需要先安装驱动
# 驱动安装包也在官网下载

# 设置PATH
export PATH=/usr/local/Ascend/driver/tools:$PATH

问题4:版本不匹配

这个坑我踩得最深!toolkit、kernels、driver三者的版本必须匹配,否则会出各种奇怪的问题。

检查版本

# toolkit版本
cat /usr/local/Ascend/ascend-toolkit/latest/version.info

# driver版本
cat /usr/local/Ascend/driver/version.info

# 两者的主版本号(如8.0)必须一致

十、下一步学习建议

环境搭好了,接下来可以:

环境搭建完成
运行官方samples
学习Ascend C语法
开发简单算子
AddCustom示例
MatMul示例
Add算子
Mul算子
  1. 跑通官方samples(1天)

    • 了解代码结构
    • 熟悉编译流程
  2. 学习Ascend C基础语法(3-5天)

    • 看训练营视频
    • 读官方文档
  3. 动手写第一个算子(1周)

    • 从最简单的Add开始
    • 理解算子开发流程

我当时第一次装花了两天,第二次有经验了只用了10分钟。所以如果你也遇到问题,不要气馁,这很正常。实在解决不了,可以去CANN社区提问,或者参加训练营有老师指导。

下一篇文章,我会介绍Ascend C编程语言的基础语法,开始真正的算子开发之旅!

如果这篇文章对你有帮助,欢迎点赞收藏!有问题欢迎留言讨论~

Logo

CANN开发者社区旨在汇聚广大开发者,围绕CANN架构重构、算子开发、部署应用优化等核心方向,展开深度交流与思想碰撞,携手共同促进CANN开放生态突破!

更多推荐