手搓 Ascend C 算子太累?试试 CANN atvc 模板库——个人开发者的一点体验分享
手搓 Ascend C 算子太累?试试 ATVC 模板库——个人开发者的一点体验分享
仓库地址:https://gitcode.com/cann/atvc
写在前面
最近在折腾昇腾(Ascend)NPU 上的算子开发。用原生 Ascend C 写一个 Vector 算子,除了核心计算逻辑,还得自己搞定数据搬入搬出、Tiling 切分、多核调度这些底层活儿,一个简单算子写下来动辄几百行,对个人开发者实在不太友好。
偶然发现 CANN 官方在 GitCode 上开源了一个项目——ATVC(Ascend C Templates for Vector Compute),用了一段时间,感觉确实省了不少事,分享给大家。
ATVC 是什么
简单说,ATVC 是一套用 Ascend C API 搭建的 C++ 模板头文件集合,专门用于快速开发典型的 Vector 算子。它的思路是:
- 把算子开发流程中的计算实现解耦成可自定义的模块;
- 数据搬入搬出等底层通用操作、通用 Tiling 计算,模板内部已经封装好;
- 开发者只需要选一个匹配的模板,填上核心计算逻辑,Kernel 侧开发就基本完成了。
官方给出的数据是:相比传统 Ascend C 开发方式,效率可以提升 3~5 倍。从我自己的体验看,最大的收益是不用手写 Tiling 就能拿到不错的性能,这块通常是新手最容易翻车的地方。
上手体验
环境要求不复杂,支持 Ascend 910B / 910C,装好 CANN toolkit 后三步就能跑起来:
# 1. 拉代码
git clone https://gitcode.com/cann/atvc.git
# 2. 编译(在仓库根目录)
bash build.sh --pkg
# 3. 跑官方自带的 add 样例验证环境
cd examples
bash run_examples.sh add
看到 Accuracy verification passed. 就说明环境和算子都没问题了。仓库里的 examples 目录 还有其他算子样例可以参考,照着抄一遍基本就能理解模板的用法。
想跑 UT 的话也很简单:bash build.sh -u,不需要额外搭测试框架(想看覆盖率再加 --cov,依赖 lcov)。
一点个人看法
适合谁:
- 想快速产出典型 Vector 算子的个人开发者 / 小团队;
- 刚入门 Ascend C、被 Tiling 劝退的新手;
- 需要快速验证想法原型的场景。
需要注意的:
- 目前面向的是典型 Vector 算子,特别定制化、非典型的场景可能还是得手写;
- 需要真实的 910B/910C 硬件环境,纯 CPU 仿真环境跑不了样例。
总体来说,ATVC 把 Ascend C 算子开发的门槛拉低了不少,尤其"模板 + 只写核心逻辑"的模式,对个人开发者非常友好。项目 2025 年 11 月才首次上线,还在活跃开发中,感兴趣的建议先 Star 一个:
https://gitcode.com/cann/atvc
鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。
更多推荐



所有评论(0)