《CANNBot 入门教程:从 0 到 1 生成你的第一个算子》笔记
原作者:严海峰 发布时间:2026-04-13
项目地址:https://gitcode.com/cann/skills
本文档基于原 PDF《CANNBot入门:从0到1生成你的第一个算子》整理与扩展,在保留原文核心内容的基础上,补充了原理讲解、名词解释、代码示例和操作注意事项,力求让零基础读者也能循序渐进地完成第一个 Ascend C 算子的开发。
目录
- 第 0 章 阅读准备:你需要知道的基础概念
- 第 1 章 CANNBot 概述
- 第 2 章 环境搭建
- 第 3 章 核心工作流
- 第 4 章 实操演示:从 0 到 1 开发 Abs 算子
- 第 5 章 常见问题与排错
- 附录 快速参考
第 0 章 阅读准备:你需要知道的基础概念
在正式开始之前,先理解几个贯穿全文的关键概念,会让后面的学习顺畅很多。
0.1 什么是「算子」(Operator)
在深度学习框架(如 PyTorch、MindSpore)中,一个神经网络的每一层,底层本质上都是由一个个基础的数学运算组成的,这些基础运算就是算子(Operator)。常见的算子包括:
- 绝对值 Abs:
y = |x| - 加法 Add、乘法 Mul
- 矩阵乘法 MatMul
- 卷积 Conv、池化 Pooling
- 归约类(求和、求最大值)Reduce
所谓「开发一个算子」,就是为某个特定的硬件平台(这里是昇腾 NPU)编写高性能的底层计算实现,让上层的神经网络可以高效地调用它。
0.2 什么是 CANN 与 Ascend C
- CANN(Compute Architecture for Neural Networks)是华为昇腾(Ascend)AI 处理器配套的异构计算架构,为开发者提供了一套从算子开发到模型部署的完整工具链。
- Ascend C 是 CANN 提供的算子开发编程语言/编程模型,它基于 C++ 扩展,让开发者可以用贴近 C++ 的语法,直接编写运行在 NPU AI Core 上的高性能 Kernel 代码。
简单理解:Ascend C 就是「写给昇腾 NPU 的 C++」。
0.3 什么是 CANNBot
CANNBot 是一套面向 CANN 开发的智能体(AI Agent)系统,它的目标是让「开发算子」这件事从「需要深厚硬件功底的手工活」变成「用自然语言描述需求,AI 自动完成方案设计、代码编写、质量审查」的高效流程。
核心理念:让 Ascend C 算子开发触手可及。
0.4 几个高频名词速览
| 名词 | 含义 |
|---|---|
| Kernel | 运行在 NPU AI Core 上的核心计算代码(算子实现的核心) |
| Tiling | 把大块数据切分成小块、分配到多个 AI Core 并行执行的策略 |
| GM | Global Memory,全局内存(芯片外的存储) |
| UB | Unified Buffer,统一缓冲区(AI Core 内的片上高速存储) |
| L1 | AI Core 内部的一级缓存/缓冲区 |
| AI Core | NPU 上的核心计算单元,一颗芯片上通常有多个 |
| block_dim | Tiling 中切分的核数(用多少个 AI Core 并行) |
| float16 / fp16 | 半精度浮点数,占用 2 字节 |
| msprof / msprof op | 昇腾的性能剖析工具 |
第 1 章 CANNBot 概述
1.1 CANNBot 是什么
CANNBot 是面向 CANN 开发的系列智能体,旨在提升开发效率。它提供可复用的 Skills(技能模块),目前已实现 Ascend C / PyPTO 算子开发全流程覆盖,未来将拓展至 CANN 更多技术领域。
几个关键数字:
- 20+ 个 Skills 技能模块
- 7 个开发阶段(标准化工作流)
- 3 层架构(应用编排层 / 角色执行层 / 知识能力层)
1.2 核心价值
- 标准化开发工作流:自动完成「方案设计 → 编写代码 → 审查质量」全流程;
- 可编译产出:输出包含 Kernel 和 Tiling 的、可直接编译运行的代码;
- 质量保障:内置代码审查、精度调试、性能验收等环节。
1.3 目标用户
- CANN 社区开发者
- 昇腾 NPU 平台 AI 应用开发者
- Ascend C / PyPTO 算子开发者
- 希望贡献 Skills / Agents 的社区贡献者
1.4 CANNBot 三层架构
CANNBot 采用了清晰的三层架构,自上而下分别是:
┌─────────────────────────────────────────────────┐
│ TEAMS(应用编排层) │
│ pypto-op-orchestrator │
│ ├─ ops-direct-invoke (Ascend C Kernel 直调) │
│ ├─ ops-registry-invoke (PyPTO 算子开发) │
│ └─ (Ascend C 自定义算子开发流程,规划中) │
├─────────────────────────────────────────────────┤
│ AGENTS(角色执行层) │
│ architect / analyst 方案设计、需求分析 │
│ developer 代码开发 │
│ reviewer 代码检视 │
│ perf-tuner / tester 性能调优、测试(规划中) │
├─────────────────────────────────────────────────┤
│ SKILLS(知识能力层) │
│ npu-arch / tiling-design / api-best / │
│ precision / runtime │
└─────────────────────────────────────────────────┘
- 编排层(Teams):编排 Agents,定义开发流程和协作模式;
- 执行层(Agents):绑定 Skills,执行具体的开发任务;
- 能力层(Skills):提供知识能力,支撑 Agent 执行任务。
打个比方:Teams 是「项目经理」,Agents 是「分工明确的工程师团队」,Skills 是「工程师手中的工具书和知识库」。
1.5 CANNBot Skills 全景图
Skills 按用途分为几大类:
| 分类 | Skills | 说明 |
|---|---|---|
| 知识库类 | ascendc-npu-arch、ascendc-tiling-design、ascendc-api-best-practices、ascendc-docs-search | NPU 架构、Tiling 设计、API 最佳实践、文档检索 |
| 调试测试类 | ascendc-precision-debug、ascendc-runtime-debug、ops-profiling、ops-precision-standard | 精度调试、运行时调试、性能剖析、精度标准 |
| 工程模板类 | ascendc-registry-invoke-to-direct-invoke、ascendc-direct-invoke-template | 工程模板与调用方式转换 |
| 测试开发类 | ascendc-st-design、ascendc-ut-develop | 系统测试设计、单元测试开发 |
| 工具辅助类 | ascendc-env-check、ascendc-code-review、ascendc-task-focus、ascendc-whitebox-design | 环境检查、代码审查、任务聚焦、白盒设计 |
第 2 章 环境搭建
2.1 环境要求与前置条件
硬件要求
| 项目 | 要求 |
|---|---|
| 昇腾 NPU 设备 | Ascend 910 及后续系列产品 |
| 内存 | 建议 16GB 以上 |
| 存储 | 建议 50GB 可用空间 |
软件要求
| 项目 | 要求 |
|---|---|
| CANN 版本 | 8.0.RC2 及以上 |
| 操作系统 | EulerOS 2.10 / CentOS 7.6 / Ubuntu 18.04+ |
| CLI 工具 | OpenCode、Claude Code 等 |
环境检查清单
| 检查项 | 达标标准 |
|---|---|
| NPU 设备就绪 | npu-smi info 能正常输出 |
| CANN 已安装 | 版本 ≥ 8.0.RC2 |
| CLI 工具就绪 | OpenCode / Claude Code 可正常启动 |
| 网络连接 | 能访问 GitCode 仓库 |
推荐云开发环境:CANN 社区云开发环境支持一键启动,NPU 设备、CANN 环境、OpenCode 工具等依赖均已默认安装,可大幅降低入门门槛。
2.2 安装方式一:脚本安装(推荐)
仓库提供 init.sh 初始化脚本,负责安装 Skills 技能模块、Agents 配置、asc-devkit 工具包,并生成配置文件(opencode.json / CLAUDE.md)。
方式 A:项目级安装(推荐)
配置仅对当前项目生效,适合多项目开发场景。
# 1. 克隆 CANN Skills 仓库
git clone https://gitcode.com/cann/skills.git
# 2. 进入算子直调示例目录
cd skills/ops/teams/ops-direct-invoke
# 3. 执行初始化脚本(OpenCode 用户)
bash init.sh project opencode
# 3. 执行初始化脚本(Claude 用户)
bash init.sh project claude
方式 B:全局安装
配置在用户目录下全局生效,适合单一项目开发场景。
# 1-2 步同上(克隆仓库并进入目录)
# 3. 执行初始化脚本(全局,OpenCode 用户)
bash init.sh global opencode
# Claude 用户
bash init.sh global claude
安装路径对比
| 安装方式 | OpenCode | Claude |
|---|---|---|
| 项目级 | .opencode/ | .claude/ |
| 全局 | ~/.config/opencode/ | ~/.claude/ |
2.3 安装方式二:手动安装
手动安装仅安装 Skills 和 Agents,适用于自定义配置场景。如果你需要灵活控制安装位置或修改配置,可以选择手动安装。注意保持符号链接的正确性,确保 CLI 工具能正确加载 Skills 和 Agents。
OpenCode 用户
# 1. 克隆 CANN Skills 仓库
git clone https://gitcode.com/cann/skills.git
# 2. 进入 skills 目录
cd skills/
# 3. 创建 .opencode 目录
mkdir -p .opencode
# 4. 创建 Skills 符号链接
ln -s ../ops/skills .opencode/skills
# 5. 创建 Agents 符号链接
ln -s ../ops/agents .opencode/agents
# 6. 复制 AGENTS.md
cp AGENTS.md .opencode/AGENTS.md
Claude 用户
# 1. 克隆 CANN Skills 仓库
git clone https://gitcode.com/cann/skills.git
# 2. 进入 skills 目录
cd skills/ops/
# 3. 创建 .claude 目录
mkdir -p .claude
# 4. 创建 Skills 符号链接
ln -s ../ops/skills .claude/skills
# 5. 创建 Agents 符号链接
ln -s ../ops/agents .claude/agents
# 6. 复制 AGENTS.md
cp AGENTS.md .claude/CLAUDE.md
2.4 环境校验与启动
目录结构校验
安装完成后,检查目录结构是否符合规范:
skills/ops/teams/ops-direct-invoke/
├── .opencode/
│ ├── skills/ # 技能模块
│ │ ├── ascendc-kernel-develop-workflow/
│ │ ├── ascendc-docs-search/
│ │ └── ...
│ ├── agents/ # 子代理
│ ├── AGENTS.md # Agent 配置
│ └── opencode.json # opencode 配置
├── init.sh # 初始化脚本
└── quickstart.md # 快速入门文档
校验检查项
| 检查项 | 达标标准 |
|---|---|
| Skills 目录存在 | .opencode/skills/ 目录不为空 |
| Agents 目录存在 | .opencode/agents/ 目录不为空 |
| 配置文件正确 | AGENTS.md 和 opencode.json 存在 |
| CLI 能正常启动 | opencode 命令无报错 |
启动 CLI 工具
在初始化完成的目录下执行以下命令启动交互界面:
# 启动 OpenCode CLI
opencode
# 启动后,输入算子开发需求
帮我开发一个 abs 算子,支持 float16...
常见问题
| 问题 | 解决方案 |
|---|---|
| 如何查看帮助? | bash init.sh --help |
| 如何更新 Skills? | 重新执行 init.sh 即可 |
| 安装失败怎么办? | 检查 CANN 版本和网络连接 |
第 3 章 核心工作流
3.1 Ascend C:七阶段开发工作流
CANNBot 将算子开发过程标准化为七个阶段:
┌────┐ ┌────┐ ┌────┐ ┌────┐ ┌────┐ ┌────┐ ┌────┐
│ 1 │→ │ 2 │→ │ 3 │→ │ 4 │→ │ 5 │→ │ 6 │→ │ 7 │
│环境│ │需求│ │算子│ │验证│ │问题│ │性能│ │总结│
│检查│ │分析│ │实现│ │优化│ │处理│ │验收│ │报告│
└────┘ └────┘ └────┘ └────┘ └────┘ └────┘ └────┘
工作流三大特点:
- 质量控制:每个阶段完成后才能进入下一阶段,确保开发质量;
- 迭代优化:阶段 4–5 支持循环迭代,持续优化算子性能;
- Agent 驱动:每个阶段由专门 Agent 执行,自动完成各项任务。
工作流触发:所有算子开发任务会自动加载
ascendc-kernel-develop-workflow技能,按阶段执行。详见AGENTS.md配置文件。
3.2 阶段 1–2:环境检查与需求分析
阶段 1 环境检查
确保开发环境就绪:
| 检查项 | 说明 |
|---|---|
| NPU 设备查询 | 检查 NPU 是否可用,获取设备信息 |
| CANN 环境验证 | 检查 CANN 版本、环境变量配置 |
| 依赖检查 | 验证必要的库和工具是否安装 |
相关 Skill:ascendc-env-check(自动执行环境检查)。
阶段 2 需求分析
理解算子功能和要求:
| 分析项 | 说明 |
|---|---|
| 算子功能理解 | 分析算子的数学表达式和计算逻辑 |
| 数据类型确定 | 支持的数据类型(float16 / float32 等) |
| Shape 分析 | 输入输出 Tensor 的 Shape 范围 |
| 性能要求 | 吞吐量、延迟等性能指标 |
Agent 自动化:CANNBot 的
architectAgent 会自动分析需求,调用ascendc-npu-arch和ascendc-api-best-practicesSkills,生成设计方案。
3.3 阶段 3:算子实现
阶段 3 是核心,包含 Tiling 设计和 Kernel 开发两部分。
3.3.1 Tiling 设计
什么是 Tiling?
Tiling 是将大规模数据计算任务切分成小块,分配到多个 AI Core 并行执行的技术。合理的 Tiling 策略能显著提升算子性能。
Tiling 数据结构示例:
// Tiling 参数示例
struct AddTiling {
uint32_t blockDim; // 核数
uint32_t tileSize; // 块大小
uint32_t totalSize; // 总大小
uint32_t splitAxis; // 切分轴
};
Tiling 设计方法论(四步):
- 分析数据特征:理解输入数据的 Shape、数据类型、访问模式;
- 确定切分策略:选择合适的切分维度(N/H/W/C 等);
- 计算 Tiling 参数:计算
block_dim、tile_size等参数; - Buffer 规划:合理分配 GM、UB、L1 内存。
切分策略主要有两类:
- 多核切分:将数据分配到多个 AI Core;
- UB 切分:适配 Unified Buffer 容量。
自动 Tiling 设计:CANNBot 根据算子类型自动选择合适的 Tiling 方案:
- Element-wise 算子 → 按数据块均匀切分;
- Reduce 算子 → 按 Reduce 轴切分;
- MatMul 算子 → 分块矩阵乘法策略。
调用
ascendc-tiling-designSkill 自动生成。
3.3.2 Kernel 开发
Kernel 代码生成:CANNBot 自动生成符合 Ascend C 规范的 Kernel 代码,包括数据搬入、计算、数据搬出三个核心步骤。
Kernel 函数结构:
// Kernel 函数结构
extern "C" __global__ __aicore__ void
abs_kernel(...) {
// 1. 数据从 GM 搬入 UB
DataCopy(xUB, xGM, size);
// 2. 执行计算(Abs)
Abs(zUB, xUB, size);
// 3. 数据从 UB 搬出到 GM
DataCopy(zGM, zUB, size);
}
这里的「搬入 → 计算 → 搬出」是 Ascend C Kernel 最经典的三段式结构,对应 GM(慢)→ UB(快)→ GM(慢)的数据流转。
代码生成流程(四步):
- 分析需求:理解算子功能和数据特征;
- 选择模板:基于算子类型选择代码模板;
- 生成代码:填充模板生成完整 Kernel 代码;
- 优化调整:应用最佳实践和性能优化。
产出物结构:
ops/{operator}/
├── CMakeLists.txt
├── {operator}_kernel.asc
├── build.sh
├── run.sh
├── scripts/
├── docs/
│ ├── DESIGN.md
│ └── PLAN.md
└── tests/
代码质量保证(由 developer Agent 自动完成):
- 遵循 API 最佳实践
- 符合 NPU 架构特性
- 自动内存对齐
- 流水线优化
3.4 阶段 4–5:验证优化与问题处理
阶段 4 验证与优化
| 环节 | 说明 | 相关 Skill |
|---|---|---|
| 编译算子 | 使用 build.sh 编译生成算子二进制文件 | — |
| 运行测试 | 执行 run.sh 验证算子功能正确性 | — |
| 性能分析 | 使用 profiling 工具分析性能瓶颈 | — |
# 编译和测试
bash build.sh
bash run.sh
阶段 5 问题处理
| 环节 | 说明 | 相关 Skill |
|---|---|---|
| 精度调试 | 对比 CPU 和 NPU 输出,定位精度问题 | ascendc-precision-debug |
| 运行时调试 | 解析错误码,排查 Kernel 挂起等问题 | ascendc-runtime-debug |
| 自动修复 | CANNBot 自动诊断并提供修复建议 | — |
- 迭代优化:阶段 4–5 支持循环迭代,持续优化直到满足要求;
- 智能诊断:Agent 自动分析问题并提供解决方案。
3.5 阶段 6–7:性能验收与总结
阶段 6 性能验收
| 环节 | 说明 |
|---|---|
| 性能数据采集 | 调用 msprof op 采集 8 个 CSV 指标文件 |
| 性能达标判定 | 对照性能标准判定是否达标 |
| 瓶颈定位与优化 | 定位瓶颈类型并给出优化建议 |
| 最终判定 | PASS / PASS WITH NOTES / FAIL |
性能验收流程:调用
ops-profilingSkill → 数据归档到perf/目录。
阶段 7 完成总结
| 环节 | 说明 |
|---|---|
| 总分与代码路径 | 汇总开发结果 |
| 性能概要 | Task Duration、主导流水、达标状态 |
| 关键问题列表 | 记录开发过程中遇到的问题 |
| 文档归档 | DESIGN.md / PLAN.md / REVIEW.md / WALKTHROUGH.md |
第 4 章 实操演示:从 0 到 1 开发 Abs 算子
本章通过一个完整的实例,带你走完整个开发流程。
4.1 实操场景设定
算子需求
开发一个 Abs(绝对值)算子,用于计算输入张量每个元素的绝对值。这是深度学习中的基础算子,广泛应用于各种神经网络模型。
- 数学表达式:
y = |x| - 计算内容:计算输入张量的绝对值
技术要求
| 项目 | 要求 |
|---|---|
| 数据类型 | float16 |
| 计算精度 | 1e-3 |
| 支持的 Shape | [1, 128]、[4, 2048]、[32, 4096] |
输入输出示例
// 输入数据
x = [-1.5, 2.0, -3.5, 4.0]
// 输出结果
y = [1.5, 2.0, 3.5, 4.0]
开发流程预览
1. 启动 CANNBot 并输入需求
2. 自动设计方案与代码生成
3. 代码审查与质量保障
4. 编译运行与验证
预计耗时:约 1 小时。
4.2 Step 1:启动 CANNBot 并输入需求
启动 CLI 工具
在初始化完成的目录下执行 opencode 命令,启动交互式开发环境:
# 进入项目目录
cd skills/ops/teams/ops-direct-invoke
# 启动 OpenCode CLI
opencode
# 成功启动后显示
OpenCode > _
输入算子开发需求
在交互界面中输入以下算子开发需求:
帮我开发一个 abs 算子,支持 float16 数据类型,shape 主要是 [1,128]、[4,2048]、[32,4096]
需求要素解析
| 需求要素 | 取值 |
|---|---|
| 算子类型 | Abs(绝对值) |
| 数据类型 | float16 |
| Shape 范围 | [1,128]、[4,2048]、[32,4096] |
CANNBot 响应流程
- 自动加载工作流:加载
ascendc-kernel-develop-workflow; - 确认需求理解:Agent 复述需求确保理解正确;
- 进入阶段 0:开始环境检查。
提示技巧:描述要清晰具体;明确数据类型和 Shape;可以补充性能要求。
4.3 Step 2:自动设计方案与代码生成
自动设计方案
CANNBot 的 architect Agent 自动完成 Tiling 设计和方案规划:
| 设计项 | 方案 |
|---|---|
| Tiling 策略 | 按数据块均匀切分,适配多核并行 |
| Buffer 规划 | 合理分配 GM、UB 内存空间 |
| 并行策略 | 利用多个 AI Core 并行计算 |
| API 选择 | 使用 Ascend C 内置 Abs 高阶 API |
代码生成过程
- 分析 Abs 算子特性(Element-wise);
- 选择 Element-wise 算子代码模板;
- 生成 Kernel、Tiling、Host 代码;
- 填充 Tiling 参数和 Shape 信息。
自动生成的代码示例
// Abs Kernel 核心代码
Abs(zUB, xUB, size);
CANNBot 自动生成符合 Ascend C 规范的代码,包含完整的数据搬入、计算、数据搬出流程。
产出物结构
ops/abs/
├── CMakeLists.txt
├── abs_kernel.asc
├── build.sh
├── run.sh
├── scripts/
├── docs/
│ ├── DESIGN.md
│ └── PLAN.md
└── tests/
代码特点
- 符合 Ascend C 编程规范
- 使用高阶 API 提升性能
- 自动内存对齐和优化
- 完整的编译和运行脚本
4.4 Step 3:代码审查与质量保障
CANNBot 的 reviewer Agent 自动进行多维度代码审查,确保代码质量和性能。
5 大类别规范
| 类别 | 检查内容 |
|---|---|
| 代码风格 | 命名规范、缩进、注释 |
| 性能 | 内存访问、并行度、流水线 |
| 安全 | 内存越界、空指针检查 |
| 可维护性 | 模块化、可读性、可测试性 |
| 正确性 | 算法实现、边界条件 |
检视内容示例
| 检视项 | 结果 |
|---|---|
| 内存对齐检查(UB 内存是否 32 字节对齐) | ✅ 通过 |
| API 使用规范(是否遵循最佳实践) | ✅ 通过 |
| 流水线优化(是否使用双缓冲和流水线) | ✅ 通过 |
4.5 Step 4:编译运行与验证
编译算子
# 进入算子目录
cd ops/abs
# 执行编译脚本
bash build.sh
# 编译成功输出
[100%] Built target abs_custom
运行测试
# 执行测试脚本
bash run.sh
# 测试成功输出
[INFO] Input: [-1.5, 2.0, -3.5, 4.0]
[INFO] Output: [1.5, 2.0, 3.5, 4.0]
[INFO] Expect: [1.5, 2.0, 3.5, 4.0]
[PASS] Test passed!
恭喜!你的第一个算子开发完成!
验证要点
- ✅ 功能正确性
- ✅ 精度达标(< 1e-3)
- ✅ 性能满足要求
- ✅ 多 Shape 支持
产出物说明
| 文件 | 说明 |
|---|---|
docs/DESIGN.md、PLAN.md | 需求设计文档、开发计划 |
abs_kernel.asc | Kernel 实现代码 |
test/ | 测试用例代码 |
build.sh / run.sh | 编译和运行脚本 |
第 5 章 常见问题与排错
5.1 安装阶段
| 问题 | 排查思路 |
|---|---|
| 无法克隆仓库 | 检查网络能否访问 GitCode,尝试配置代理 |
init.sh 执行报错 | 先运行 bash init.sh --help 查看用法,确认参数正确 |
| CLI 无法加载 Skills | 检查符号链接是否正确,目录结构是否符合规范 |
| CANN 版本过低 | 升级到 8.0.RC2 及以上 |
5.2 环境检查阶段
| 问题 | 排查思路 |
|---|---|
npu-smi info 无输出 | 检查 NPU 驱动是否安装、设备是否就绪 |
| 环境变量缺失 | 确认 source 了 CANN 的 set_env.sh |
5.3 开发与验证阶段
| 问题 | 排查思路 |
|---|---|
| 编译失败 | 检查 CANN 版本、头文件路径、CMake 配置 |
| 精度不达标 | 使用 ascendc-precision-debug 对比 CPU/NPU 输出定位 |
| Kernel 挂起 | 使用 ascendc-runtime-debug 解析错误码排查 |
| 性能不达标 | 使用 ops-profiling(msprof op)定位瓶颈并优化 |
5.4 通用建议
- 需求描述要具体:明确数据类型、Shape 范围、精度和性能要求;
- 善用云开发环境:新手优先使用 CANN 社区云开发环境,避免环境配置踩坑;
- 按阶段推进:每阶段验收通过后再进入下一阶段,减少返工;
- 善用文档:
DESIGN.md/PLAN.md/REVIEW.md/WALKTHROUGH.md记录了完整开发过程,遇到问题先查文档。
附录 快速参考
A. 关键命令速查
# —— 安装 ——
git clone https://gitcode.com/cann/skills.git
cd skills/ops/teams/ops-direct-invoke
bash init.sh project opencode # 项目级安装(OpenCode)
bash init.sh project claude # 项目级安装(Claude)
bash init.sh global opencode # 全局安装(OpenCode)
# —— 启动 ——
opencode # 启动 OpenCode CLI
# —— 编译与测试 ——
cd ops/abs
bash build.sh # 编译算子
bash run.sh # 运行测试
# —— 其他 ——
bash init.sh --help # 查看帮助
npu-smi info # 查看 NPU 设备信息
B. 七阶段工作流一览
| 阶段 | 名称 | 核心任务 | 相关 Skill/Agent |
|---|---|---|---|
| 1 | 环境检查 | NPU/CANN/依赖就绪 | ascendc-env-check |
| 2 | 需求分析 | 功能、类型、Shape、性能 | architect Agent |
| 3 | 算子实现 | Tiling 设计 + Kernel 开发 | ascendc-tiling-design、developer Agent |
| 4 | 验证优化 | 编译、测试、性能分析 | — |
| 5 | 问题处理 | 精度/运行时调试、自动修复 | ascendc-precision-debug、ascendc-runtime-debug |
| 6 | 性能验收 | msprof op 采集、达标判定 | ops-profiling |
| 7 | 总结报告 | 汇总结果、文档归档 | — |
C. 关键术语表
| 术语 | 全称 | 含义 |
|---|---|---|
| CANN | Compute Architecture for Neural Networks | 昇腾 AI 异构计算架构 |
| Ascend C | — | 面向 NPU 的算子开发编程模型 |
| Kernel | — | 运行在 AI Core 上的核心计算代码 |
| Tiling | — | 数据切分与多核并行策略 |
| GM | Global Memory | 全局内存 |
| UB | Unified Buffer | 统一缓冲区(片上高速存储) |
| AI Core | — | NPU 核心计算单元 |
| msprof | — | 昇腾性能剖析工具 |
| Element-wise | — | 逐元素运算(如 Abs、Add) |
D. 社区信息
- 项目地址:https://gitcode.com/cann/skills
- 社区愿景:打造开放易用、技术领先的 AI 算力新生态
- 社区使命:使能开发者基于 CANN 社区自主研究创新,构筑根深叶茂、跨产业协同共享共赢的 CANN 生态
本文档到此结束。现在,开始您的 CANNBot 之旅!让 Ascend C 算子开发触手可及!
鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。
更多推荐
所有评论(0)