第2章 开发环境搭建
说实话,很多初学者一上来就急着写算子,结果环境配了一周还没跑通第一个样例。我见过太多这样的案例了。这一章咱们就把地基打牢——从昇腾AI处理器长什么样,到CANN工具包怎么装、怎么验证,一步到位。
2.1 昇腾AI处理器简介
昇腾处理器是华为自研的AI芯片,核心是达芬奇架构。我最早接触昇腾310时,第一感觉是——这芯片的算力密度真高。一个AI Core里集成了矩阵计算单元、矢量计算单元、标量计算单元,还有专门的缓存系统。
你想想看,一个典型的AI算子,比如卷积或者矩阵乘,在昇腾上跑的时候,数据从DDR搬运到AI Core的Local Memory,然后矩阵计算单元一口气算完,中间几乎不中断。这种设计让它在推理场景特别能打。
目前主流的昇腾芯片包括昇腾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 |
| 昇腾驱动 | 已安装驱动 | 最新稳定版 |
另外,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 或者输出结果正确,那就说明环境搞定了。
$ASCEND_TOOLKIT_HOME/lib64 加进去。
2.3.4 开发工具链一览
CANN工具包里自带了很多好东西。我列几个你马上会用到的:
- ascendc — 算子编译器,把你的DSL代码编译成昇腾可执行文件。
- ascendgdb — 调试器,可以单步跟踪算子执行。
- msprof — 性能分析工具,帮你找到算子的瓶颈。
- omg — 模型转换工具,虽然咱们主要写算子,但偶尔也会用到。
这些工具都在 $ASCEND_TOOLKIT_HOME/bin 下,环境变量配好后直接终端敲名字就能用。