目录
引言
作为一名 CANN 开发者,我在日常算子开发中经常遇到这些痛点:
| 痛点 | 具体表现 | 影响 |
| 开发效率低 | 手写代码框架耗时,重复劳动多 | 一个算子开发周期长 |
| 性能优化难 | Tiling策略、双缓冲等技术门槛高 | 难以充分利用NPU性能 |
| 代码质量参差 | 缺乏统一规范,代码风格不一 | 团队协作困难 |
| 学习成本高 | Ascend C API繁多,文档分散 | 新人上手慢 |
正好CANN 社区最近发布了 CANNBot,一个面向CANN开发的用于提升开发效率的系列智能体,提供了丰富的技能模块和智能代理能力,特别是自动算子生成和仿真能力,让我眼前一亮。
我想验证的是:AI 真的能帮我写算子吗?效果如何?能提升多少效率?
于是,我决定在 AtomGit Notebook 上完整体验这个项目,开发一个矩阵乘法算子,看看它是否真的能解决我的痛点。
测评结论
本次借助 CANNBot 顺利完成 Ascend C 算子开发,整体实操耗时大幅压缩,算子最终性能达到预期水准;下面从核心优势、待优化方向、效率提升维度展开详细测评分析。
✅ 核心优势
| 优势 | 具体表现 | 效果评估 |
| 开发效率高 | 自动生成完整项目结构和代码框架 | ⭐⭐⭐⭐⭐ 大大减少手动编写工作量 |
| 代码质量好 | 结构清晰,注释详细,包含最佳实践 | ⭐⭐⭐⭐⭐ 代码规范统一 |
| 性能优化到位 | 自动实现 Tiling 策略和双缓冲技术 | ⭐⭐⭐⭐☆ 性能表现良好 |
| 学习价值高 | 通过生成代码学习 Ascend C 最佳实践 | ⭐⭐⭐⭐⭐ 新人友好 |
| 流程标准化 | 7阶段开发流程,规范完整 | ⭐⭐⭐⭐⭐ 团队协作更顺畅 |
⚠️ 待优化点
| 问题 | 说明 | 建议 |
| 参数化程度 | 当前代码参数化覆盖范围有限,适配场景受限 | 扩充参数配置项,兼容更多数据类型、数据形状 |
| 错误处理 | 现有异常捕获逻辑单薄,各类运行异常易直接导致程序中断 | 补齐分支异常校验、兜底捕获逻辑,提升代码健壮性 |
| 文档完善 | 现有文档仅记录功能结果,缺少底层设计推导过程 | 补充设计思路、优化逻辑注解,方便他人理解优化策略 |
| 响应速度 | 构造复杂算子时计算链路长,整体生成耗时偏高 | 通过缓存、逻辑拆分等手段缩减算子生成耗时,优化响应时间 |
📊 效率提升效果
通过本次实操,我对比了使用 CANNBot前后的开发效率:
| 开发环节 | 传统方式 | 使用 Skills 后 | 效率提升 |
| 环境搭建 | 1-2小时 | 15分钟 | 75%↑ |
| 代码框架编写 | 2-4小时 | 10分钟 | 90%↑ |
| Tiling设计 | 2-3小时 | 自动生成 | 95%↑ |
| 代码审查 | 1小时 | 自动审查 | 80%↑ |
| 性能调优 | 2-4小时 | 自动优化建议 | 60%↑ |
总体评价:CANNBot 是一款值得推荐的 Ascend C 算子开发辅助工具,特别适合快速验证算法思路、学习 Ascend C 编程和原型开发场景。
CANNBot 是什么?
CANNBot 是面向CANN开发的用于提升开发效率的系列智能体,CANNBot-Skills仓库为其提供可复用的Skills模块,目前已经从早期仅覆盖 Ascend C 算子开发的工具集,演进为横跨 9 大开发领域、60+ Skills、20+ Agents、10 个官方 Plugin 的全栈技术体系,覆盖了 Ascend C / Catlass / PyPTO / TileLang / Triton 算子开发、torch.compile 图模式优化和 NPU 模型推理端到端优化。
核心能力一览
┌─────────────────────────────────────────────────────────────────────────────┐
│ CANNBot-Skills 核心能力 │
├─────────────────────────────────────────────────────────────────────────────┤
│ 🤖 9 大开发路径 + 10 个官方 Plugin │
│ Ascend C 直调/注册调用 · Catlass · PyPTO · TileLang · Triton │
│ torch.compile 图模式 · 模型推理优化 · 代码检视 · 仿真调试 │
├─────────────────────────────────────────────────────────────────────────────┤
│ 📚 60+ Skills(6 大类别) │
│ 知识库:NPU架构 · API最佳实践 · Tiling设计 · 精度标准 │
│ 工程模板:注册调转直调 · Kernel直调模板 · Blaze算子生成 │
│ 调试测试:精度调试 · 运行时调试 · 崩溃调试 · 环境检查 │
│ 性能优化:性能采集分析 · AISS TilingSolver · 性能最佳实践 │
│ 仿真验证:ops-simulator 精度/性能仿真 · 流水线空泡分析 │
│ 协作治理:Skill审查 · PR/Issue自动化 · 代码检视 │
├─────────────────────────────────────────────────────────────────────────────┤
│ 👥 20+ 智能Agent │
│ architect(架构师)· developer(开发者)· reviewer(审查者) │
│ tester(测试者)· analyst(分析师)· perf-tuner(调优师) │
│ design-reviewer(设计串讲)· implementer(实施者) │
├─────────────────────────────────────────────────────────────────────────────┤
│ 🔧 多阶段开发流程 │
│ 环境检查 → 设计 → 设计串讲 → 开发 → 审查 → 修复 → 精度验收 → 性能验收 │
│ (Step 6 新增独立精度验收环节) │
├─────────────────────────────────────────────────────────────────────────────┤
│ 🔌 双轨制安装 │
│ 完整安装:install-helper / init.sh(Plugin + Agents + Workflows) │
│ 独立安装:npx skills add(Agent Skills 标准,70+ AI 编程工具通用) │
└─────────────────────────────────────────────────────────────────────────────┘
本次实操案例
我选择开发一个支持 float16 数据类型的矩阵乘法算子,这是深度学习中常用的操作,且具有一定的复杂度,适合测试 CANNBot的能力。
算子规格:
- 算子名称:MatMulFloat16
- 数据类型:float16
- 输入:矩阵 A [m, k],矩阵 B [k, n]
- 输出:矩阵 C [m, n]
- 支持 shape:[128, 128]、[256, 256]、[512, 512]
第一部分:环境搭建
1.1 创建Notebook实例
1.访问AtomGit官网(https://ai.atomgit.com/)
2.登录账号,进入 "我的Notebook" 页面

3.点击 "激活Notebook",选择如图所示配置,点击“立即启动”即可创建 "免费实例"。

- 等待实例创建完成,进入到下图所示界面:

1.2 安装 Node.js 18+
Node.js 18+是CANNBot-Skills 安装及运行的前置条件。
# 1.检查 node 是否存在
node -v
# 2.安装 nvm v0.39.3
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash

# 1.检查 nvm 命令是否正常
nvm ls
# 2. 将 nvm 配置添加到 .bashrc 文件
echo 'export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"'>> ~/.bashrc
# 3. 应用配置
source ~/.bashrc

# 1.安装 node v20.20.2
nvm install 20
# 1.查看 node 版本
node -v

1.3 安装 OpenCode
OpenCode / Claude Code / Trae / Cursor / GitHub Copilot中任一 AI 编程工具都是 CANNBot-Skills安装及运行的前置条件,这里我选择OpenCode :
# 安装 OpenCode
curl -fsSL https://opencode.ai/install | bash

添加路径到 PATH 环境变量,验证安装成功。
# 1. 将 OpenCode 配置添加到 .bashrc
echo 'export PATH="/opt/atomgit/.opencode/bin:$PATH"' >> ~/.bashrc
# 2. 应用配置
source ~/.bashrc
# 3. 验证安装成功
which opencode
opencode --version

1.4 安装 CANNBot-Skills
使用完整安装方式,确保配置仅对当前项目生效:
# 通过 install-helper 一键安装
curl -fsSL https://raw.gitcode.com/cann/cannbot-skills/raw/master/install.sh | bash



第二部分:实操案例 - 开发矩阵乘法算子
2.1 启动 OpenCode
在初始化完成的目录下执行:
opencode

2.2 输入开发需求
在 OpenCode 交互界面中输入:
帮我开发一个矩阵乘法算子,支持 float16 数据类型,输入为两个矩阵 A 和 B,输出为矩阵 C = A × B。要求:
1. 支持的 shape 主要是 [128, 128]、[256, 256]、[512, 512]
2. 优化 Tiling 策略,充分利用 NPU 资源
3. 实现双缓冲技术,提高内存访问效率


2.3 阶段 1:环境检查
OpenCode 会自动加载 ascendc-kernel-develop-workflow 技能,按照标准工作流程指导开发。首先进入阶段 1:环境检查。
检查项目目录结构

验证开发环境

创建项目结构并生成environment.json(环境检查结果文件)。

2.4 阶段 2:设计阶段
OpenCode 会分析需求并生成设计方案:

2.5 阶段2.5:设计串讲阶段

2.6 阶段3:开发阶段

2.7 阶段4:审查阶段

2.8 阶段5:修复循环
审查通过,无需阶段5修复循环

2.9 阶段6:性能验收

2.10 阶段7:完成汇报


804

被折叠的 条评论
为什么被折叠?



