作者:昇腾实战派
本文仅整理昇腾社区、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
【Triton Ascend知识地图】
TileLang
更新中…
所有评论(0)