第2章 开发环境搭建

说实话,很多初学者一上来就急着写算子,结果环境配了一周还没跑通第一个样例。我见过太多这样的案例了。这一章咱们就把地基打牢——从昇腾AI处理器长什么样,到CANN工具包怎么装、怎么验证,一步到位。

开发环境搭建 昇腾AI处理器简介 开发环境要求 CANN工具包安装 达芬奇架构 AI Core / AI CPU 硬件 & 软件 操作系统 & 驱动 安装包 & 依赖 验证 & 测试 环境就绪 → 开始算子开发

2.1 昇腾AI处理器简介

昇腾处理器是华为自研的AI芯片,核心是达芬奇架构。我最早接触昇腾310时,第一感觉是——这芯片的算力密度真高。一个AI Core里集成了矩阵计算单元、矢量计算单元、标量计算单元,还有专门的缓存系统。

你想想看,一个典型的AI算子,比如卷积或者矩阵乘,在昇腾上跑的时候,数据从DDR搬运到AI Core的Local Memory,然后矩阵计算单元一口气算完,中间几乎不中断。这种设计让它在推理场景特别能打。

关键概念: 昇腾芯片内部有多个AI Core,每个AI Core可以独立执行算子。还有AI CPU负责控制逻辑和标量运算。我个人习惯把AI Core比作「算力猛兽」,AI CPU则是「调度管家」。

目前主流的昇腾芯片包括昇腾310(推理卡)、昇腾910(训练卡)。咱们课程主要基于昇腾910来讲解,但大部分知识也适用于310。

2.2 开发环境要求

搭建环境之前,先看看你的机器够不够格。我建议直接用一台x86服务器,装Ubuntu 20.04或22.04。为什么?因为CANN对Ubuntu的支持最成熟,我在项目中踩过的坑最少。

项目 最低要求 推荐配置
CPU 4核 8核及以上
内存 8 GB 32 GB
硬盘 50 GB 200 GB SSD
操作系统 Ubuntu 18.04 Ubuntu 20.04 / 22.04
昇腾驱动 已安装驱动 最新稳定版
💡 小经验: 如果你用虚拟机,记得给CPU开启硬件虚拟化,否则后面跑算子性能测试时会莫名其妙地慢。我曾经在这上面浪费了半天。

另外,Python版本建议3.8或3.9。CANN工具包对Python的依赖比较严格,版本不对会报一些奇怪的错。

2.3 CANN工具包安装与验证

CANN(Compute Architecture for Neural Networks)是昇腾的软件栈。说白了,它就是连接你的算子和昇腾硬件的桥梁。没有CANN,你写的算子代码只是一堆文本。

安装步骤其实不复杂,但有几个细节容易翻车。我带你走一遍。

2.3.1 下载与安装

去昇腾社区下载CANN安装包,选对应操作系统和架构的版本。我一般用Ascend-cann-toolkit_xxx_linux-x86_64.run这个包。

# 添加执行权限
chmod +x Ascend-cann-toolkit_*.run

# 安装,建议用root或sudo
sudo ./Ascend-cann-toolkit_*.run --install --quiet

# 默认安装到 /usr/local/Ascend/ascend-toolkit/ 下
⚠️ 注意: 安装前务必确认昇腾驱动已装好。可以用 npu-smi info 查看驱动状态。如果驱动没装,CANN安装会失败,而且报错信息很隐晦。

2.3.2 环境变量配置

安装完后,需要设置环境变量。我个人习惯把下面这段加到 ~/.bashrc 里,一劳永逸。

export ASCEND_TOOLKIT_HOME=/usr/local/Ascend/ascend-toolkit/latest
export PATH=$ASCEND_TOOLKIT_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ASCEND_TOOLKIT_HOME/lib64:$LD_LIBRARY_PATH
export PYTHONPATH=$ASCEND_TOOLKIT_HOME/python/site-packages:$PYTHONPATH

然后 source ~/.bashrc 让它生效。你可以用 echo $ASCEND_TOOLKIT_HOME 检查一下。

2.3.3 验证安装

验证环节很重要。我每次装完都会跑一个简单的算子来确认环境没问题。

# 查看CANN版本
ascend_toolkit --version

# 运行一个官方样例(以Add算子为例)
cd $ASCEND_TOOLKIT_HOME/operator/samples/add_sample
python run_add.py

如果看到类似 test pass 或者输出结果正确,那就说明环境搞定了。

我的避坑指南: 我曾经遇到一个情况——CANN装好了,但跑样例时提示找不到libascendcl.so。后来发现是LD_LIBRARY_PATH没配全。记住,一定要把 $ASCEND_TOOLKIT_HOME/lib64 加进去。

2.3.4 开发工具链一览

CANN工具包里自带了很多好东西。我列几个你马上会用到的:

这些工具都在 $ASCEND_TOOLKIT_HOME/bin 下,环境变量配好后直接终端敲名字就能用。