随着华为 Ascend 生态的不断发展,CANN 作为核心计算框架,在 AI 算子开发与部署中扮演着至关重要的角色。对于开发者而言,能够快速搭建干净的 CANN 9.0 环境、构建和调试 ops-cv 包,是确保算子功能完整、性能优化到位的前提。本文系统梳理了从环境确认、CANN 9.0 安装、ops-cv 构建与部署,到算子调试与性能分析的全流程操作,并结合实际遇到的问题提供了详尽的解决方案与避坑经验,旨在为开发者提供一份可直接落地的实战指南。无论是初次接触 Ascend 平台的新手,还是希望在算子开发中提升效率的工程师,都能从中获得清晰可行的操作参考。

一、我的环境

npu-smi info
cat /usr/local/Ascend/ascend-toolkit/latest/opp/version.info

在这里插入图片描述

二、下载 CANN 9.0

wget https://mirror-centralrepo.devcloud.cn-north-4.huaweicloud.com/artifactory/cann-run-release/software/9.0.0/20260127000324761/aarch64/Ascend-cann-toolkit_9.0.0_linux-aarch64.run

wget https://mirror-centralrepo.devcloud.cn-north-4.huaweicloud.com/artifactory/cann-run-release/software/9.0.0/20260127000324761/aarch64/Ascend-cann-910b-ops_9.0.0_linux-aarch64.run

在这里插入图片描述
在这里插入图片描述

给两个包加执行权限

chmod +x Ascend-cann-toolkit_9.0.0_linux-aarch64.run
chmod +x Ascend-cann-910b-ops_9.0.0_linux-aarch64.run

卸载旧 CANN(我现在是 8.0/RC)

/usr/local/Ascend/ascend-toolkit/latest/uninstall.sh
rm -rf /usr/local/Ascend/ascend-toolkit

(⚠️ 不会影响驱动,只卸 toolkit)
在这里插入图片描述

安装 CANN 9.0

yes | ./Ascend-cann-toolkit_9.0.0_linux-aarch64.run --install --force

在这里插入图片描述

yes | ./Ascend-cann-910b-ops_9.0.0_linux-aarch64.run --install


在这里插入图片描述

加载环境变量

source /home/ma-user/Ascend/cann-9.0.0/set_env.sh


验证

which atc

在这里插入图片描述

亲测避坑:
必须显示 9.0.0,否则后面 ops-cv 9.0.0 会直接 ABI 不匹配。

export ASCEND_HOME=/home/ma-user/Ascend/cann-9.0.0
export PATH=$ASCEND_HOME/compiler/ccec_compiler/bin:$ASCEND_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ASCEND_HOME/lib64:$LD_LIBRARY_PATH
export PYTHONPATH=$ASCEND_HOME/python/site-packages:$PYTHONPATH

三、ops-cv 包构建、部署与调用(CANN 9.0 全量算子替换)

3.1 环境确认

确认 CANN 9.0.0 环境是否干净可用

# 1. 确认 atc 路径
which atc


# 2. 确认环境变量
echo $ASCEND_HOME_PATH

# 3. 加载 CANN 运行环境
source /home/ma-user/Ascend/cann-9.0.0/set_env.sh

# 4. 查看 atc 帮助(9.0 没有 --version)
atc --help | head

在这里插入图片描述

3.2 ops-cv下载部署

cd ~
git clone https://gitcode.com/cann/ops-cv.git
cd ops-cv
git fetch --all --tags
git checkout 9.0.0-beta.1

在这里插入图片描述
安装依赖

bash install_deps.sh
pip3 install -r requirements.txt

在这里插入图片描述
报错:

[ma-user ops-cv]$bash install_deps.sh
====================================================
开始安装项目依赖
====================================================

==== 检查gawk ====
gawk已安装

==== 检查Python ====
当前Python版本:3.10.12
Python满足要求

==== 检查GCC ====
当前GCC版本: 7.3.0
GCC版本满足要求(7.3.0)

==== 检查cmake ====
安装CMake...
执行命令:sudo dnf install -y cmake
CMake版本仍不满足,请手动安装

3.3 报错解决

问题核心:cmake 版本过低

GCC 7.3.0   ✔
Python 3.10 ✔
cmake      ✘(系统源里版本太老)

手动安装高版本 CMake(用户态)
1️⃣ 下载官方二进制版

cd ~
wget https://github.com/Kitware/CMake/releases/download/v3.26.4/cmake-3.26.4-linux-aarch64.tar.gz

2️⃣ 解压到本地目录

tar -zxvf cmake-3.26.4-linux-aarch64.tar.gz
mv cmake-3.26.4-linux-aarch64 cmake-3.26.4

在这里插入图片描述

3️⃣ 注入到当前会话 PATH

export PATH=~/tools/cmake-3.26.4-linux-aarch64/bin:$PATH

验证:

cmake --version

可选:永久生效

echo 'export PATH=$HOME/cmake-3.26.4/bin:$PATH' >> ~/.bashrc

在这里插入图片描述

3.3 重新检测依赖

重新检查 ops-cv 依赖

cd ~/ops-cv
bash install_deps.sh

这次 cmake 检测就通过了,然后就可以继续编译 ops-cv 了。

在这里插入图片描述

3.4 编译 ops-cv

编译 ops-cv 包

编译全部算子包:

export SOC_VERSION=ascend910b
bash build.sh --pkg --soc=$SOC_VERSION

报错如下

在这里插入图片描述
原因C 编译器找不到链接器 ld,所以 cmake 无法生成测试程序。

安装 binutils

sudo dnf install -y binutils

在这里插入图片描述
在这里插入图片描述

再次执行编译
在这里插入图片描述
即可编译成功
在这里插入图片描述

3.5 安装 ops-cv 包

编译成功后,run 包在 build_out 目录下,执行安装命令:

# 设置安装路径(可选,默认 /usr/local/Ascend)
export INSTALL_PATH=/usr/local/Ascend

# 安装 ops-cv 包
./build_out/cann-${SOC_VERSION#ascend}-ops-cv_${CANN_VERSION}_linux-$(uname -m).run --full --install-path=$INSTALL_PATH

验证算子功能

安装完成后,可以立即 运行算子示例,确认算子调用正常:

bash build.sh --run_example grid_sample eager

grid_sample:算子名称(小写下划线形式)

eager:执行模式,表示 acnn 调用(推荐)

如果输出了以下结果,就表示算子包安装成功并可正常调用:

在这里插入图片描述

3.5 执行 UT 单元测试

确认所有算子功能完整,可以运行单元测试:

pip3 install -r tests/requirements.txt
bash build.sh -u --ophost

执行完成后,你会看到:

在这里插入图片描述

表示所有 UT 测试通过。

在这里插入图片描述

四、调试与优化

在算子开发与集成过程中,调试与性能分析是必不可少的环节。对于常见的错误定位,可以通过 Host 侧日志(plog)和算子内部打印输出(例如在 C/C++ 代码中调用 aclGetRecentErrMsg() 或自定义的打印逻辑)快速捕获问题并定位执行失败或精度异常的位置。同时,在核函数内部可通过算子调试 API 打印中间 Tensor 数据,用于分析计算流程。性能分析方面,应结合硬件特性采用工具采集指标,如 msProf(针对 Atlas A2/A3 系列)或 CANN Simulator(针对 Ascend 950PR),获取算子执行耗时、流水信息、计算性能等数据,辅助发现瓶颈并有针对性地优化性能。

详细的调试策略、操作步骤和性能采集方法请参考官方调试与优化文档:

https://gitcode.com/cann/ops-cv/blob/master/docs/zh/debug/op_debug_prof.md#%E6%80%A7%E8%83%BD%E8%B0%83%E4%BC%98

开发贡献

完成上述操作后,已基本完成了一个算子的开发流程。可以将算子贡献到本项目experimental目录,贡献流程请参考https://gitcode.com/cann/ops-nn/blob/master/CONTRIBUTING.mdhttps://gitcode.com/cann/ops-nn/blob/master/CONTRIBUTING.md。开发过程中遇到的任何问题可通过Issue方式咨询。

Logo

昇腾计算产业是基于昇腾系列(HUAWEI Ascend)处理器和基础软件构建的全栈 AI计算基础设施、行业应用及服务,https://devpress.csdn.net/organization/setting/general/146749包括昇腾系列处理器、系列硬件、CANN、AI计算框架、应用使能、开发工具链、管理运维工具、行业应用及服务等全产业链

更多推荐