在昇腾 CANN 算子开发实践中,环境搭建与调试效率直接决定开发节奏。本文以 CANN 9.0 与 ops-cv 算子包为实战对象,完整复现本地环境从 CANN 安装、依赖修复、编译部署到算子调试的全流程,还原真实踩坑与解决方案。与此同时,当前昇腾生态已提供一站式算力与开发平台,自面向 CANN 社区全面放开,大幅降低入门门槛。https://atomgit.com/cann

我在本次实践中分别采用本地自建环境与一站式开发平台两种路径完成算子调试:本地搭建需手动处理版本兼容、依赖缺失、编译报错等大量琐碎问题,耗时久且易出现环境污染;而一站式平台预置标准化 CANN 环境、NPU 算力与调试工具,无需从零配置,开箱即用,调试与性能分析链路更顺畅。经对比验证,一站式开发平台在环境稳定性、上手速度、问题排查效率上优势显著,强烈推荐 CANN 开发者优先选用,既能减少环境适配成本,也能更专注于算子逻辑开发与性能优化。

随着 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

如果需要自定义安装目录,可添加:

--install-path=目标路径

例如

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

--install \

--install-path=/home/ma-user/Ascend/cann-9.0.0 \

--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:执行模式,表示 aclnn 调用(推荐)

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

3.5 执行 UT 单元测试

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

pip3 install -r tests/requirements.txt

bash build.sh -u --ophost

执行完成后,你会看到:

表示所有 UT 测试通过。

四、调试与优化

在算子开发与集成过程中,调试与性能分析是必不可少的环节。对于常见的错误定位,可以通过 Host 侧日志(plog)和算子内部打印输出(例如在 C/C++ 代码中调用 aclGetRecentErrMsg() 或自定义的打印逻辑)快速捕获问题并定位执行失败或精度异常的位置。

同时,在核函数内部可通过算子调试 API 打印中间 Tensor 数据,用于分析计算流程。性能分析方面,应结合硬件特性采用工具采集指标,获取算子执行耗时、流水信息、计算性能等数据,辅助发现瓶颈并有针对性地优化性能。

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

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

五、AtomGit一站式开发平台实践

除了本地手动搭建环境进行算子开发调试外,CANN官方还提供了更便捷高效的AtomGit一站式开发平台,极大简化了环境配置、依赖安装、编译调试等繁琐流程,尤其适合快速验证、算子开发与日常调试。

5.1 平台入口与登录

平台地址:https://atomgit.com/cann/ops-cv

进入页面后,直接点击页面中的云开发按钮,使用华为云账号完成登录即可进入开发流程。

5.2 云开发环境创建

在云开发控制台中,选择创建CANN专用云开发环境

该环境为昇腾算子开发者量身定制,已预置CANN框架、PyTorch、调试与调优工具链等全套开发依赖,推荐配套 8.5.0 分支 使用,环境开箱即用,无需手动配置版本兼容问题。

该算力平台已面向CANN社区全面放开:

● 外部体验用户无需申请白名单,直接可用;

● 提供总计100卡时免费额度,关机后不消耗卡时;

● 若需无限制使用,可登记GitCode与华为云账号加入内部白名单。

5.3 进入开发环境

环境创建完成并开机后,选择 WebIDE 方式进入在线开发界面。

进入后即可直接使用完整的开发环境,无需手动下载CANN包、配置环境变量、编译依赖等操作,省去大量本地环境部署时间。5.4 直接运行算子验证

进入环境后,可直接执行单元测试,快速验证ops-cv算子功能:

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

执行完成后即可看到单元测试正常通过,算子环境可用。

5.5 一站式开发方式总结

对比本地手动搭建环境:

无需下载安装包、无需配置环境变量、无需解决版本冲突

无需手动编译依赖、修复cmake/binutils等报错

● 直接拥有可用NPU算力与标准化CANN环境;

● 提供100卡时免费额度,成本更低、门槛更小;

● 调试、运行、测试链路完整,开箱即用。

整体来看,AtomGit一站式开发平台大幅降低了CANN算子开发的环境门槛,节约大量环境部署与问题排查时间,非常推荐开发者优先使用,可以更专注于算子逻辑实现与调试优化。

六.总结

本文完整呈现了基于 CANN 9.0 + ops-cv 从本地环境搭建、依赖修复、编译部署到算子调试与单元测试的全流程实战过程,记录了版本兼容、CMake 版本过低、binutils 缺失等典型问题的排查与解决思路,为 Ascend 算子开发者提供了可直接复用的落地步骤与避坑经验。

通过本地手动搭建与 AtomGit 一站式开发平台两种开发模式的对比实践可以清晰看出:本地部署虽然灵活可控,但需要耗费大量时间处理环境配置、版本对齐、依赖编译等琐碎工作,极易因环境污染或工具链不匹配导致调试受阻;而 AtomGit 一站式平台预置标准化 CANN 环境、完整工具链与可用 NPU 算力,免去了安装包下载、环境变量配置、依赖报错修复等一系列繁琐操作,真正实现开箱即用。

加之平台面向社区开放 100 卡时免费额度、外部用户无需白名单即可体验,进一步降低了昇腾算子开发的入门门槛。整体而言,AtomGit 一站式开发在稳定性、便捷性与效率上优势突出,极大缩短了从环境准备到正式开发的周期,让开发者能够更专注于算子逻辑实现与性能优化,是当前 CANN 算子开发与调试的首选方式,值得所有 Ascend 开发者优先选择与长期使用。

Logo

作为“人工智能6S店”的官方数字引擎,为AI开发者与企业提供一个覆盖软硬件全栈、一站式门户。

更多推荐