昇腾算子开发知识地图
文章标题链接来源核心内容什么是Ascend C链接昇腾社区官方文档官方最新版(CANN 9.0 beta2)对Ascend C语言定位、特性与适用场景的权威定义昇腾Ascend C编程入门教程(纯干货)链接昇腾社区覆盖AI处理器架构、流水线范式、多核SPMD并行及完整LeakyReLU算子开发示例Ascend C教程文档全新来袭链接昇腾社区汇总Ascend C全套文档更新,涵盖最佳实践、编程模型与
·
作者:昇腾实战派
本文仅整理昇腾社区、CSDN等公开的昇腾算子相关文章,方便开发者学习参考。如有侵权,请联系删除。
Ascend C知识地图
一、背景
本知识地图旨在整理昇腾社区及CSDN上与Ascend C相关的优质文章,帮助开发者快速定位学习资源,系统掌握昇腾AI处理器算子开发技术。
Ascend C是华为昇腾AI处理器生态中用于高性能自定义算子开发的核心编程语言,基于C/C++语法扩展,专为在昇腾AI芯片上实现极致性能而设计。
二、基础理论
Ascend C 概述
| 文章标题 | 链接 | 来源 | 核心内容 |
|---|---|---|---|
| 什么是Ascend C | 链接 | 昇腾社区官方文档 | 官方最新版(CANN 9.0 beta2)对Ascend C语言定位、特性与适用场景的权威定义 |
| 昇腾Ascend C编程入门教程(纯干货) | 链接 | 昇腾社区 | 覆盖AI处理器架构、流水线范式、多核SPMD并行及完整LeakyReLU算子开发示例 |
| Ascend C教程文档全新来袭 | 链接 | 昇腾社区 | 汇总Ascend C全套文档更新,涵盖最佳实践、编程模型与高阶API算法图解 |
硬件架构
| 文章标题 | 链接 | 来源 | 核心内容 |
|---|---|---|---|
| 计算单元-硬件架构 | 链接 | 昇腾社区官方文档 | 官方说明AI Core内Cube、Vector、Scalar三类计算单元的职责与分工 |
| Ascend NPU 硬件架构入门 | 链接 | CSDN | 从DaVinci架构角度介绍NPU计算单元、内存层次及与GPU的类比对比 |
| 昇腾Ascend概念澄清:Host、Device、AI Core、AscendCL | 链接 | CSDN | 系统梳理昇腾各层级组件概念与关系,消除Host/Device/AIC/AICPU等常见混淆 |
编程范式
| 文章标题 | 链接 | 来源 | 核心内容 |
|---|---|---|---|
| SPMD模型 | 链接 | 昇腾社区官方文档 | 阐述单程序多数据并行模型及多核任务分配机制 |
| 编程范式 | 链接 | 昇腾社区官方文档 | 详述矢量编程的CopyIn/Compute/CopyOut三阶段流水范式 |
三、快速上手
入门教程
| 文章标题 | 链接 | 来源 | 核心内容 |
|---|---|---|---|
| Ascend C保姆级教程:我的第一份Ascend C代码 | 链接 | 昇腾社区 | 手把手实现Add算子,覆盖多核并行、流水并行与孪生调试全流程 |
| 快速入门-算子开发(基础篇) | 链接 | 昇腾社区官方文档 | 官方基础篇入门,含开发流程、核函数编写和编译执行步骤 |
| 基于自定义算子工程的快速入门 | 链接 | 昇腾社区官方文档 | 自定义算子工程端到端开发流程,涵盖算子注册与框架调用 |
算子开发
Tiling
| 文章标题 | 链接 | 来源 | 核心内容 |
|---|---|---|---|
| Host侧tiling实现 | 链接 | 昇腾社区官方文档 | 介绍TilingData结构定义与blockDim设定,实现Host侧数据分块参数计算 |
| 多核Tiling切分 | 链接 | 昇腾社区官方文档 | 阐述多核间数据均分策略,以8核2048元素场景为例说明分块参数计算 |
进阶实现
| 文章标题 | 链接 | 来源 | 核心内容 |
|---|---|---|---|
| kernel侧算子实现-进阶篇 | 链接 | 昇腾社区官方文档 | 覆盖Kernel侧进阶开发,含内存队列管理与多流水任务调度 |
| Ascend C算子开发学习笔记 | 链接 | CSDN | 涵盖编程模型到算子实现的完整学习记录,附代码注释与实践总结 |
| 矩阵编程基础知识(高阶API) | 链接 | 昇腾社区官方文档 | 介绍Matmul高阶API(C=A*B+bias)的编程接口与使用约束 |
| Ascend C 2.0新特性:支撑大模型融合算子高效开发 | 链接 | 昇腾社区 | MC²通算融合将通信与计算从串行改并行,典型场景整网性能提升10% |
四、性能调优
流水优化
| 文章标题 | 链接 | 来源 | 核心内容 |
|---|---|---|---|
| Ascend C算子性能优化实用技巧01——流水优化 | 链接 | 昇腾社区 | 讲解流水范式、Double Buffer延迟隐藏及异步接口减少核间通信的三种优化手段 |
| 使能double buffer(最佳实践) | 链接 | 昇腾社区官方文档 | 详述Double Buffer实现方式及其对Vector单元利用率的提升效果 |
| Ascend C算子性能优化实用技巧02——内存优化 | 链接 | 昇腾社区 | 介绍矩阵乘结果复用、UB融合及片上内存层次利用等内存优化手段 |
| 优化bank分配以提升读写性能 | 链接 | 昇腾社区官方文档 | 通过合理分配Unified Buffer的bank结构消除bank冲突,提升访存性能 |
| Ascend C算子性能优化实用技巧03——搬运优化 | 链接 | 昇腾社区 | 给出单次搬运≥16KB及512B地址对齐等实用搬运优化建议 |
| Ascend C算子优化实用技巧04——Tiling优化 | 链接 | 昇腾社区 | 通过Tiling策略调优提升计算效率,含块大小与对齐选取建议 |
| L2 Cache切分-Tiling优化 | 链接 | 昇腾社区官方文档 | 通过L2 Cache感知Tiling降低GM访问频率,提升片上带宽利用率 |
| 核间负载均衡 | 链接 | 昇腾社区官方文档 | 余数块均摊至各核的负载均衡方案,避免部分核空闲影响整体吞吐 |
| Ascend C算子性能优化实用技巧05——API使用优化 | 链接 | 昇腾社区 | 汇总API调用层面的优化技巧,避免冗余操作与指令气泡 |
五、最佳实践
| 文章标题 | 链接 | 来源 | 核心内容 |
|---|---|---|---|
| 基于Ascend C的FlashAttention算子性能优化最佳实践 | 链接 | 昇腾社区 | 通过Tiling调整、负载均衡、CV流水、FixPipe等5项优化实现约4倍性能提升 |
| FlashAttention算子性能调优案例 | 链接 | 昇腾社区官方文档 | Tiling块调整、负载均衡、CV流水及FixPipe优化的FlashAttention调优实战 |
六、参考资料
| 文章标题 | 链接 | 来源 | 核心内容 |
|---|---|---|---|
| Ascend C API列表 | 链接 | 昇腾社区官方文档 | 完整的Ascend C API分类列表,含基础API与高阶API索引 |
| DataCopy普通数据搬运接口 | 链接 | 昇腾社区官方文档 | DataCopy接口详解,含参数说明、约束及GM↔LocalMem搬运示例 |
官方资源
- 昇腾社区:https://www.hiascend.com/
- Ascend C主页:https://www.hiascend.com/ascend-c
- CANN官方文档:https://www.hiascend.com/document
Triton Ascend
- 基础理论
- 安装部署
- 算子开发
- 测试调优
TileLang
更新中…
鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。
更多推荐
所有评论(0)