Ascend C 算子开发系列教程
本教程面向昇腾 NPU,系统讲解 Ascend C 高性能算子开发方法,内容涵盖 CANN 与 NPU 基础、SIMD/SIMT 编程模型、多层级 API、典型算子实践、PyTorch 框架集成以及 GE 入图编译与运行,帮助开发者逐步掌握从核函数编写到框架调用的完整开发流程。
根据章节内容,教程目录中包含以下学习材料:
- Notebooks:包含课程知识点、示例代码与练习题,适用于自主学习或讲师引导式教学。
- src:包含部分实践课程使用的完整样例工程,可用于编译、运行和修改。
适用人群
- 希望了解并掌握 Ascend C 算子编程方法的开发者
- AI 算法工程师、C/C++ 开发者和算子开发工程师
前置知识要求
在学习本教程之前,建议具备以下基础:
- 掌握 C/C++ 编程基础
- 了解并行编程基本概念
- 熟悉 Linux 命令行、CMake 和基础编译流程
整体学习目标
完成本教程后,你将能够:
- 理解 CANN 与昇腾 NPU 基础,掌握 Ascend C 核函数开发流程及多层级 API 的基本使用方法
- 掌握 SIMD、SIMT 编程模型,并能够根据算子特点选择合适的编程方式
- 掌握矩阵、融合及离散访存等典型算子的开发、验证与基础优化方法
- 掌握自定义 Ascend C Kernel 在 PyTorch 框架下的调用方法
- 掌握自定义算子接入 GE 图的基本方法,理解 GE 图的编译与运行流程
软硬件配套说明
| 项目 | 要求 |
|---|---|
| 主要支持硬件 | Ascend 950PR / Ascend 950DT(dav-3510) |
| 兼容硬件 | 部分 SIMD、CV 融合和 GE 教程支持 Atlas A2 / A3(dav-2201),以具体 Notebook 的说明为准 |
| CANN 版本 | 9.1.0 及以上 |
| Python | 3.11 |
注意: SIMT、RegBase 和部分 Tensor API 能力仅支持 Ascend 950PR / Ascend 950DT。运行样例前,请先查看对应 Notebook 中的硬件兼容性和编译参数说明。
在线体验环境
本教程中的概念讲解可直接通过 Notebook 阅读。如需编译和运行 Ascend 950 专属样例,建议使用 CANNLab Ascend 950 配套环境,具体请参考 CANNLab 环境体验指南。
注意: 如在本地环境离线体验,需自行安装配套的 CANN 软件,具体请参考 CANN 快速安装。
第一章:前置知识
| Notebook | 状态 |
|---|---|
| 1.1 章节介绍 | 🚧 开发中 |
| 1.2 人工智能与算子基础 | 🚧 开发中 |
| 1.3 CANN 架构与昇腾 NPU 原理 | 🚧 开发中 |
| 1.4 算子开发的基本概念 | 🚧 开发中 |
| 1.5 章节测试 | 🚧 开发中 |
第二章:算子入门
| Notebook | 状态 |
|---|---|
| 2.1 章节介绍 | 🚧 开发中 |
| 2.2 SIMT 与 SIMD 介绍 | 🚧 开发中 |
| 2.3 对应典型算子结构 | 🚧 开发中 |
| 2.4 Ascend C 的 Hello World | 🚧 开发中 |
| 2.5 SIMD 连续类矢量算子示例(C API Add 算子) | 🚧 开发中 |
| 2.6 SIMD 矩阵算子示例(Tensor 编程) | 🚧 开发中 |
| 2.7 SIMT 离散类矢量算子示例(Gather 算子) | 🚧 开发中 |
| 2.8 章节测试 | 🚧 开发中 |
第三章:Ascend C 编程模型
| Notebook | 状态 |
|---|---|
| 3.1 章节介绍 | 🚧 开发中 |
| 3.2 编程模型概述 | 🚧 开发中 |
| 3.3.1 SIMD 抽象硬件架构简介 | 🚧 开发中 |
| 3.3.2 SIMD 核函数 | 🚧 开发中 |
| 3.3.3 SIMD 编程模型与接口概述 | 🚧 开发中 |
| 3.3.4 基于指针的 C 语言 SIMD 编程 | 🚧 开发中 |
| 3.3.5 基于 Tensor 的 C++ SIMD 编程 | 🚧 开发中 |
| 3.3.6 基于 TPipe/TQue 框架的 SIMD 编程 | 🚧 开发中 |
| 3.3.7 基于静态 Tensor 框架的 SIMD 编程 | 🚧 开发中 |
| 3.3.8 SIMD 章节实践 | 🚧 开发中 |
| 3.4.1 SIMT 抽象硬件架构 | 🚧 开发中 |
| 3.4.2 SIMT 线程架构 | 🚧 开发中 |
| 3.4.3 SIMT 核函数 | 🚧 开发中 |
| 3.4.4 SIMT 内存层级 | 🚧 开发中 |
| 3.4.5 SIMT 同步机制 | 🚧 开发中 |
| 3.4.6 SIMT 编程 API | 🚧 开发中 |
| 3.4.7 SIMT 课后实践 | 🚧 开发中 |
第四章:简单算子实践
| Notebook | 状态 |
|---|---|
| 4.1 章节介绍 | 🚧 开发中 |
| 4.2 基于指针的C语言编程算子开发教程 | 🚧 开发中 |
| 4.3 Tensor API 矩阵算子优化实践 | 🚧 开发中 |
| 4.4 基于静态 Tensor 的 CV 融合算子开发 | 🚧 开发中 |
| 4.5 CV 融合算子教程 | 🚧 开发中 |
| 4.6 SIMT Gather 算子开发 | 🚧 开发中 |
第五章:框架集成
| Notebook | 状态 |
|---|---|
| 5.1 章节介绍 | 🚧 开发中 |
| 5.2 PyTorch 框架下 Kernel 直调 | 🚧 开发中 |
第六章:高级特性
| Notebook | 状态 |
|---|---|
| 6.1 章节介绍 | 🚧 开发中 |
| 6.2 Aclgraph 入图编译与运行 | 🚧 开发中 |
| 6.3 GE 入图编译与运行 | 🚧 开发中 |
第七章:高级算子实践
| Notebook | 状态 |
|---|---|
| 7.1 章节介绍 | 🚧 开发中 |
| 7.3 基于指针的C语言编程算子开发高阶教程 | 🚧 开发中 |