| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 14 天前 | ||
| 14 天前 | ||
| 14 天前 | ||
| 14 天前 |
Vector 算子开发课程
本课程专注于华为昇腾 NPU 的 Vector 计算单元,从芯片架构、SIMD/SIMT 编程模型,到实际的算子开发和优化,提供全面的学习路径。
课程以 FastGelu(标准 GELU 的 sigmoid 近似:y = x / (1 + exp(-1.702 * x)),其中 1.702 为经验系数)作为贯穿全课程的示例算子。
课程结构
第一章:基础掌握
介绍昇腾 AI 处理器的 Vector 计算架构,包括 A2/A3/A5 芯片架构、SIMD Membase/Regbase 编程、SIMT 编程模型等基础知识。
第二章:加速库基础认知
了解算子执行流程、算子库的目录结构、Tiling 原理以及开发环境的搭建。
第三章:Ascend 算子开发
深入学习 SIMD 和 SIMT 算子开发,包括 membase/regbase 编程、aclnn 和 PTA 接口调用、性能优化和调试技巧。
前置知识要求
- 具备 C/C++ 编程基础
- 了解深度学习框架(PyTorch/TensorFlow)基本概念
- 具备一定的并行编程基础
- 已完成 Ascend C 算子开发系列教程基础部分
软硬件配套说明
| 项目 | 要求 |
|---|---|
| 支持硬件 | Ascend 950PR/Ascend 950DT |
| CANN 版本 | 8.0.0 及以上 |
| Python | 3.8+ |
在线体验环境
本教程支持以下在线体验环境:
| 体验环境 | 镜像模板 / 版本 | Python 内核 | 说明 |
|---|---|---|---|
| CANNLab 950尝鲜 | cann_9.0.0-beta.2-py3.12-a5 | Python 3.12 | 参考 CANNLab 环境体验指南创建CANNLab环境运行notebook |
注意: 如在本地环境离线体验,需自行安装配套的 CANN 软件,具体请参考 CANN 安装指南。
章节目录
第一章:基础掌握
| 编号 | 标题 | 内容 |
|---|---|---|
| 1.1 | 章节介绍 | 章节概述、前置要求、学习目标 |
| 1.2 | 芯片架构简介 | A2/A3/A5 芯片 AI Core 架构 |
| 1.3 | SIMD Membase 编程基础 | Membase 编程范式与常见指令 |
| 1.4 | SIMD Regbase 编程基础 | Regbase 编程模型、VF 寄存器与指令 |
| 1.5 | SIMT 编程基础 | SIMT 线程架构与内存层级 |
| 1.6 | 章节实践 | FastGelu regbase 完整实现 |
第二章:加速库基础认知
| 编号 | 标题 | 内容 |
|---|---|---|
| 2.1 | 章节介绍 | 章节概述、前置要求、学习目标 |
| 2.2 | 算子执行流程 | aclnn 单算子 API、GE 图模式、Kernel 直调 |
| 2.3 | 算子目录结构 | FastGelu 工程目录布局与 Tiling 原理 |
| 2.4 | 开发环境部署 | CANN Toolkit/Ops 安装与环境配置 |
| 2.5 | 章节实践 | FastGelu 算子工程搭建 |
第三章:Ascend 算子开发
| 编号 | 标题 | 内容 |
|---|---|---|
| 3.1 | 章节介绍 | 章节概述、前置要求、学习目标 |
| 3.2 | SIMD 算子开发 | membase 与 regbase 模式 FastGelu 完整开发 |
| 3.3 | SIMT 算子开发 | SIMT 算子开发实战 |
| 3.4 | 调用接口开发 | aclnn 两段式接口与 PTA 调用模式 |
| 3.5 | 算子调试 | 调试工具与调试方法 |
| 3.6 | 算子性能优化 | Double Buffer、UB 优化、Scalar 优化等 |
| 3.7 | 章节实践 | FastGelu 完整开发 + 性能优化 |
本课程从基础概念到实际开发,循序渐进地帮助您掌握 Vector 算子开发的完整流程。