从环境搭建到算子调试:CANN 9.0 + ops-cv 全流程实战指南
本文详细介绍了在华为Ascend平台上搭建CANN 9.0开发环境并构建ops-cv算子包的全流程。主要内容包括:环境确认、CANN 9.0的下载安装、ops-cv包的获取与构建,以及常见问题的解决方案。重点解决了cmake版本过低、编译器链接问题等关键性错误,提供了从环境准备到最终编译成功的完整操作指南。通过清晰的步骤说明和实际截图,为开发者提供了可直接参考的实战经验,有助于提升Ascend平台
随着华为 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),获取算子执行耗时、流水信息、计算性能等数据,辅助发现瓶颈并有针对性地优化性能。
详细的调试策略、操作步骤和性能采集方法请参考官方调试与优化文档:
开发贡献
完成上述操作后,已基本完成了一个算子的开发流程。可以将算子贡献到本项目experimental目录,贡献流程请参考https://gitcode.com/cann/ops-nn/blob/master/CONTRIBUTING.mdhttps://gitcode.com/cann/ops-nn/blob/master/CONTRIBUTING.md。开发过程中遇到的任何问题可通过Issue方式咨询。
昇腾计算产业是基于昇腾系列(HUAWEI Ascend)处理器和基础软件构建的全栈 AI计算基础设施、行业应用及服务,https://devpress.csdn.net/organization/setting/general/146749包括昇腾系列处理器、系列硬件、CANN、AI计算框架、应用使能、开发工具链、管理运维工具、行业应用及服务等全产业链
更多推荐




所有评论(0)