CANNBot 实操体验:基于Ascend C的矩阵乘法算子开发 目录引言测评结论✅ 核心优势⚠️ 待优化点 效率提升效果CANNBot 是什么核心能力一览本次实操案例第一部分环境搭建1.1 创建Notebook实例1.2 安装 Node.js 181.3 安装 OpenCode1.4 安装 CANNBot-Skills第二部分实操案例 - 开发矩阵乘法算子2.1 启动 OpenCode2.2 输入开发需求2.3 阶段 1环境检查2.4 阶段 2设计阶段2.5 阶段2.5设计串讲阶段2.6 阶段3开发阶段2.7 阶段4审查阶段2.8 阶段5修复循环2.9 阶段6性能验收2.10 阶段7完成汇报参考资源引言作为一名 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 Skills6 大类别 │ │ 知识库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.shPlugin Agents Workflows │ │ 独立安装npx skills addAgent 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选择如图所示配置点击“立即启动”即可创建 免费实例。4.等待实例创建完成进入到下图所示界面1.2 安装 Node.js 18Node.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 -v1.3 安装 OpenCodeOpenCode / 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 --version1.4 安装CANNBot-Skills使用完整安装方式确保配置仅对当前项目生效# 通过 install-helper 一键安装 curl -fsSL https://raw.gitcode.com/cann/cannbot-skills/raw/master/install.sh | bash第二部分实操案例 - 开发矩阵乘法算子2.1 启动 OpenCode在初始化完成的目录下执行opencode2.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完成汇报参考资源CANNBot 仓库cannbot-skills:基于 CANN 生态的 Agent 技能模块项目 - AtomGit说明文档cannbot-skills/docs · CANN/cannbot-skills - AtomGit问题反馈AtomGit - 全球开发者的开源社区,开源代码托管平台

本月热点