cann-learning-hub:基于 CANN 生态的学习中心项目

CANN 学习中心仓,支持在线互动运行、边学边练,提供教程、示例与优化方案,一站式助力昇腾开发者快速上手。

分支2Tags1
文件最后提交记录最后更新时间
仓库基础设施建设 Signed-off-by: fuyangchenghu <fuyangchenghu2@huawei.com>3 个月前
add article: Ascend C矩阵乘接口选型指南 Co-authored-by: RiddleTan<klnhtt@126.com> # message auto-generated for no-merge-commit merge: !50 merge feature/ascend-c-mmad-interface-selection-guide into master add article: Ascend C矩阵乘接口选型指南 Created-by: RiddleTan Commit-by: RiddleTan Merged-by: cann-robot Description: ## 描述 新增一篇Ascend C矩阵乘接口选型指南文章,从硬件原理出发,结合实际开发场景,梳理了矩阵乘相关接口的分类、适用场景、选型决策流程、常见误区和最佳实践,帮助开发者快速选择合适的矩阵乘接口,提升开发效率和程序性能。 ## 关联的Issue 无 ## 测试 已完成内容校验,符合公众号技术文章写作规范,所有参考样例均来自官方样例集可直接运行验证。 ## 文档更新 - 新增:blogs/operator/ascend_c_mmad_selection_guide/Ascend C矩阵乘接口选型指南-从场景到API的快速决策.md ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 内容优化 - [ ] 其他,请描述: See merge request: cann/cann-learning-hub!501 个月前
update: 补充torch-rechub教程在线体验链接 Co-authored-by: zutao<wanzutao1@h-partners.com> # message auto-generated for no-merge-commit merge: !99 merge master into master update: 补充torch-rechub教程在线体验链接 Created-by: zutao Commit-by: zutao Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 内容优化 - [ ] 其他,请描述: ## 其他信息 <!-- 在这里可以添加任何与这个 Pull Request 相关的其他说明。 --> See merge request: cann/cann-learning-hub!993 天前
更新描述低错 Co-authored-by: fuyangchenghu<fuyangchenghu2@huawei.com> 2 个月前
修复warning Co-authored-by: waimaidaole<1595992831@qq.com> # message auto-generated for no-merge-commit merge: !43 merge master into master 修复warning Created-by: waimaidaole Commit-by: waimaidaole Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> https://gitcode.com/cann/cann-learning-hub/issues/16 <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 内容优化 - [ ] 其他,请描述: ## 其他信息 <!-- 在这里可以添加任何与这个 Pull Request 相关的其他说明。 --> See merge request: cann/cann-learning-hub!431 个月前
参考实践更新 Co-authored-by: zutao<wanzutao1@h-partners.com> # message auto-generated for no-merge-commit merge: !66 merge master into master 参考实践更新 Created-by: zutao Commit-by: zutao Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 内容优化 - [ ] 其他,请描述: ## 其他信息 <!-- 在这里可以添加任何与这个 Pull Request 相关的其他说明。 --> See merge request: cann/cann-learning-hub!6614 天前
feat: 新增 as_strided 算子开发案例(CANNJudge 开放题库真题) Co-authored-by: mlewis<137259307@qq.com> # message auto-generated for no-merge-commit merge: !72 merge feat/as-strided-example into master feat: 新增 as_strided 算子开发案例(CANNJudge 开放题库真题) Created-by: mlewis Commit-by: mlewis Merged-by: cann-robot Description: ## 描述 新增 as_strided 算子完整开发案例,作为 CANNBot Skills 的使用示例,展示从需求分析到 CANNJudge 提交的全流程。该算子为 CANNJudge 开放题库中的练习题(原 CANN 算子挑战赛 S2 赛季真题)。 ### 案例结构 ``` skills/examples/as_strided/ ├── code/ # 完整源码(从 CANNJudge 模板填充) │ ├── op_kernel/ # Kernel 实现(双路径:Gather + 逐元素回退) │ └── op_host/ # Host Tiling(路径判断 + 偏移表预计算 + Append) ├── docs/ # 全流程文档 │ ├── DESIGN.md # 技术设计(API 验证、Buffer 规划、双路径策略) │ ├── PLAN.md # 开发计划(10 用例测试计划 + 性能数据) │ ├── WALKTHROUGH.md # 设计串讲(9 个问题,含 1 阻塞级 UB 容量错误) │ ├── REVIEW.md # 代码审查(FAIL 75→PASS 98,7 维度 100 分制) │ ├── TUTORIAL.md # 自包含开发教程(1624 行,含完整源码 + 踩坑实录) │ └── perf/round_001/ # NPU profiling 性能数据 ├── experience-report/ # 体验报告(含截图) │ └── README.md # 从设计串讲拦截致命错误到功能全通 ├── scripts/ # Golden 生成 + 性能测试脚本 └── run_test.py # 精度验证(10 用例全通过,max_diff=0) ``` ### 核心设计亮点 1. **双路径策略**:Path A(输入全量入 UB + Gather API,高效)vs Path B(逐元素 DataCopyPad,回退) 2. **Host 预计算偏移表**:通过 GetRawTilingData()->Append() 追加到 tiling data,消除 Kernel 内 SetValue 和 div/mod 3. **增量索引计算**:混合进制计数器递增多维索引,仅用 add/sub/cmp,作为 tiling data 容量不足时的回退 4. **设计串讲拦截致命错误**:串讲发现 UB 容量 248KB→192KB 错误,零成本修复,避免运行时崩溃 ### CANNJudge 提交结果 5/5 全部 Pass,precision=1.0,2 个用例达到全局最优时间。功能全通,性能仍有优化空间。 ## 关联的Issue 无 ## 测试 - 本地编译通过(CANN 9.0,ascend910b) - 本地精度验证:10 用例全通过,max_diff=0(FP32/FP16/int32) - CANNJudge 提交验证:5/5 Pass,precision=1.0 - NPU Profiling:Task Duration 12.92us,Block Dim 40(满核),icache_miss_rate 0% ## 文档更新 - 新增 skills/examples/as_strided/docs/TUTORIAL.md:自包含开发教程 - 新增 skills/examples/as_strided/experience-report/README.md:体验报告 - 新增 skills/examples/as_strided/docs/DESIGN.md:技术设计文档 - 新增 skills/examples/as_strided/docs/WALKTHROUGH.md:设计串讲记录 - 新增 skills/examples/as_strided/docs/REVIEW.md:代码审查报告 ## 类型标签 - [x] 新特性 - [x] 内容优化 ## 其他信息 - 本案例可作为 CANNBot Skills 的参考示例,后续算子开发案例按相同结构存放于 skills/examples/ 下 - 体验报告中包含 7 张截图(云开发环境、RSA 加密、CANNBot 流程、判题结果等),另有 2 处截图占位符需补充 - TUTORIAL.md 自包含所有设计细节和完整源码,可独立发布供开发者参考 See merge request: cann/cann-learning-hub!7213 天前
[conv]添加conv算子开发教程 Co-authored-by: y00799046<yuxin5@huawei.com> Co-authored-by: jinyijian<jinyijian1@huawei.com> Co-authored-by: zhoumin_<zhoumin107@huawei.com> Co-authored-by: Developer user<wangshenhao1@huawei.com> # message auto-generated for no-merge-commit merge: !84 merge develop into master [conv]添加conv算子开发教程 Created-by: jinyijian Commit-by: jinyijian;y00799046;zhoumin_;royccc;Developer user Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 内容优化 - [ ] 其他,请描述: ## 其他信息 <!-- 在这里可以添加任何与这个 Pull Request 相关的其他说明。 --> See merge request: cann/cann-learning-hub!8410 小时前
[conv]添加conv算子开发教程 Co-authored-by: y00799046<yuxin5@huawei.com> Co-authored-by: jinyijian<jinyijian1@huawei.com> Co-authored-by: zhoumin_<zhoumin107@huawei.com> Co-authored-by: Developer user<wangshenhao1@huawei.com> # message auto-generated for no-merge-commit merge: !84 merge develop into master [conv]添加conv算子开发教程 Created-by: jinyijian Commit-by: jinyijian;y00799046;zhoumin_;royccc;Developer user Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 内容优化 - [ ] 其他,请描述: ## 其他信息 <!-- 在这里可以添加任何与这个 Pull Request 相关的其他说明。 --> See merge request: cann/cann-learning-hub!8410 小时前
仓库基础设施建设 Signed-off-by: fuyangchenghu <fuyangchenghu2@huawei.com>3 个月前
仓库基础设施建设 Signed-off-by: fuyangchenghu <fuyangchenghu2@huawei.com>3 个月前
规范化OAT.xml中许可证声明形式 Co-authored-by: chenyx2012<975102023@qq.com> 2 个月前
update: 补充torch-rechub教程在线体验链接 Co-authored-by: zutao<wanzutao1@h-partners.com> # message auto-generated for no-merge-commit merge: !99 merge master into master update: 补充torch-rechub教程在线体验链接 Created-by: zutao Commit-by: zutao Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 内容优化 - [ ] 其他,请描述: ## 其他信息 <!-- 在这里可以添加任何与这个 Pull Request 相关的其他说明。 --> See merge request: cann/cann-learning-hub!993 天前
仓库基础设施建设 Signed-off-by: fuyangchenghu <fuyangchenghu2@huawei.com>3 个月前
delete unused readme Co-authored-by: waimaidaole<1595992831@qq.com> # message auto-generated for no-merge-commit merge: !85 merge master into master delete unused readme Created-by: waimaidaole Commit-by: waimaidaole Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 内容优化 - [ ] 其他,请描述: ## 其他信息 <!-- 在这里可以添加任何与这个 Pull Request 相关的其他说明。 --> See merge request: cann/cann-learning-hub!8510 天前

cann-learning-hub

🔥Latest News

  • [2026/05] cann-learning-hub新增MC2融合算子开发系列教程,讲解MC2融合算子核心概念与开发方法。
  • [2026/05] 新增HIXL应用开发系列教程,讲解昇腾单边通信库核心概念与开发方法。
  • [2026/04] cann-learning-hub新增skills目录,包含CANNJudge竞赛skill及自定义算子工程算子生成skill。
  • [2026/03] cann-learning-hub技术博客内容添加(blogs目录)
  • [2026/03] cann-learning-hub项目首次上线。

🚀概述

cann-learning-hub 是CANN (Compute Architecture for Neural Networks)生态的官方开源学习中心仓库,聚焦 NPU 加速计算开发能力培养,汇聚从入门到进阶的全栈学习资源。 仓库涵盖 CANN 全栈加速计算的系列示例与最佳实践教程,支持以 Notebook 方式在线 / 离线交互式运行,帮助开发者零门槛上手。 我们致力于打造动态、全面的 CANN 知识平台,系统化整理入门指南、高级优化教程、精选算子与模型示例及经过验证的最佳实践方案。通过持续迭代更新,助力开发者快速掌握 CANN 开发技能,高效释放昇腾 NPU 算力,加速 AI 应用的开发与创新。 欢迎广大开发者贡献案例、教程、文档及各类学习资源,共建开放共享的 CANN 开发者生态。

本仓已集成代码仓库智能体,点击 Zread 徽章,进入其专属页面,开启在线智能代码学习与知识问答体验!

📝版本配套

本项目源码会基于CANN软件的非beta版本进行全量验证,关于CANN软件版本与本项目标签的对应关系请参阅release仓库中的相应版本说明,已验证情况如下下表所示。

已验证支持CANN版本 验证日期
8.5.0 2026.03.02

🧭 开发者学习路径

按你的技术方向,快速找到最适合的入口:

我想做… 从这里开始 状态
写高性能 NPU 算子 Ascend C 算子开发教程 ✅ 已上线
10 分钟体验自定义算子 快速上手:第一个自定义算子 ✅ 已上线
10 分钟体验算子 API 调用 快速上手:第一个算子 API 调用 ✅ 已上线
MC2 融合算子实战 算子开发实战系列 ✅ 已上线
HiXL 单边通信开发 HiXL 应用开发教程 ✅ 已上线
大模型微调实战 SwanLab 共建:LLM 微调实战课程 🔍 评审中
推理性能优化 Sana-Video 推理优化实践 ✅ 已上线
刷题练手 CANNJudge 开放题库 ✅ 已开放
参加大赛 CANN 大赛专区 ✅ 已开放

🔗 学 · 练 · 赛:一站式成长链路

cann-learning-hub 不是孤立的"看教程",而是打通学习到实战的完整闭环:

平台 说明
📖 cann-learning-hub(本仓) 系列教程 + 快速上手 + 参考实践 + 技术博客
🏋️ CANNJudge 开放题库,Ascend C 算子编程在线刷题,实时评测
🔬 CANNLab 任意 CANN 代码仓右上角一键启动,获得 NPU 环境用于练习 & 调测(初始 100 小时,积分可兑换时长)
🏆 CANN 大赛专区 官方 / 社区大赛报名入口,与全国开发者同台竞技

💡 推荐路径:选方向 → 看教程 → 去 CANNJudge 刷题 / CANNLab 实验 → 参赛验证 → 贡献你的实践(PR 到 contrib/)

📚 系列课程全景

✅ 已上线    🔍 评审中(PR 已提交)   🚧 建设中

业务场景 课程系列 进展
算子开发 Ascend C 算子开发系列(基于 A2/A3,SIMD 编程) ✅ 已上线
Ascend C 算子开发系列(基于 A5,SIMD 兼容 A2/A3 + 新增 SIMT) 🚧 建设中
算子开发实战系列(MC2 融合算子) ✅ 已上线
PyPTO 算子开发系列 🚧 建设中
PyASC 算子开发系列 🚧 建设中
TileLang 算子开发系列 🚧 建设中
训练 大模型训练优化 🚧 建设中
大语言模型微调实战(SwanLab 共建) 🔍 评审中
推理 大模型推理优化 🚧 建设中
Sana-Video 推理优化实践 ✅ 已上线
推荐系统 推荐系统开发(DataWhale 贡献) ✅ 已上线
应用开发 应用开发系列 🚧 建设中
图框架 图框架加速 & 图模式应用系列 🚧 建设中
集合通信 HCCL 集合通信系列 🚧 建设中
HiXL 单边通信系列 ✅ 已上线
CANN Bot CANN Bot 系列课程 🚧 建设中

🔍 目录结构

├── quick_start                        # 快速入门
│   ├── first_custom_operator          # 第一个自定义算子
│   └── first_operator_api_call        # 第一个算子 API 调用
├── tutorials                          # 开发教程
│   ├── ascendc_operator_development   # Ascend C 算子开发(8 章)
│   ├── MC2_fused_operator_development # MC2 融合算子开发
│   ├── hixl_development               # HiXL 单边通信应用开发(4 章)
│   └── ...                            # 待扩展(PyPTO / TileLang 等)
├── reference_practice                 # 参考实践
│   ├── model_inference_optimization   # 模型推理优化
│   │   └── sana_video                # Sana-Video 推理优化
│   └── pytorch_online_inference_operator_optimize  # PyTorch 在线推理算子优化
├── blogs                              # 技术博客
│   ├── operator                       # 算子(10 篇)
│   ├── inference                      # 推理(12 篇)
│   └── training                       # 训练(3 篇)
├── contrib                            # 社区贡献
├── contrib                            # 用户贡献
│   ├── tutorials                      # 外部贡献教程
│   │   ├── torch-rechub               # Torch-RecHub推荐系统实战教程
│   │   └── swan_llm_course            # SwanLab 共建:LLM 微调实战
├── skills                             # CANNBot 技能
│   ├── ascendc-ops-project           # 自定义算子工程生成
│   └── cannjudge-submit              # CANNJudge 竞赛提交
├── operators                          # 算子仓工作目录
│   ├── addcmul                        # addcmul 算子
│   ├── as_strided                     # as_strided 算子
│   └── erf                            # erf 算子
├── docs                               # 文档与指南
│   └── gitcode_env_experience_guide  # gitcode 环境体验指南
└── README.md

📝 技术博客

CANN 在实际业务场景中的最新技术实践与成果。

算子

博客 简介 时间
AICPU 点对点通信算子开发 基于 AICPU+TS 实现 HCCL 自定义 Send/Recv 算子 2026.2
AICPU Tiling 下沉编程 Tiling 计算下沉到 AICPU,减少 Host 与 Device 交互 2025.12
Ascend C RTC 即时编译 运行时按 shape 即时编译,兼顾性能与迭代灵活性 2025.12
DeepXTrace 快慢卡在线检测 MOE 推理集群轻量级快慢卡诊断,分钟级定位 2025.12
HCCL ReduceScatter 精度优化 开源 ReduceScatter 精度增强改造 2025.12
MIX 算子开发贡献 矩阵化重构 RoPE,落地首个开源 MIX 算子 2025.12
CrossEntropyLoss 与 Zloss 融合 损失函数融合,MoE 场景端到端 5.2% 效率提升 2025.11
算子 Kernel 直调编程 异构混合编程,简化编译部署,降低开发门槛 2025.11
TilingKey 模板化编程 统一多场景算子管理,减少 icache miss 2025.11
Ascend C 矩阵乘接口选型指南 矩阵乘 API 接口对比与选型建议 2025.10

推理

博客 简介 时间
Overlap Scheduling 吞吐优化 CPU 与 NPU 执行重叠,TPS 提升约 70% 2026.3
npugraph_ex 第三方框架集成 图编译与编译缓存能力接入,降低冷启动耗时 2026.2
Deepseek-R1 SuperPoD 推理优化 全栈协同,TTFT<2s、TPOT<50ms,608 QPM 2025.12
HIXL、Mooncake 与 vLLM KV Cache 池化 KV Cache 池化 + D2D/H2H 传输,降低 TTFT 2025.12
HIXL RL 长尾时延优化 PD 分离与高效传输,缓解千卡集群长尾 2025.12
LongCat-Flash SuperPod 推理优化 多流并发 + 控核 + SuperKernel,TPOT 10ms 2025.12
npugraph_ex 图模式优化 aclGraph 图捕获与重放,减少 Host 下发 2025.12
torch_npu IPC 特性 跨进程共享设备内存,节省显存 2025.12
TorchAir 自定义 FX Pass 多流并行自动图变换,减少适配代码 2025.12
SGLang、Mooncake 与 HIXL PD 分离 加速 PD 分离 D2D 特性落地 2025.11
SuperKernel 技术综述 整网编译为大算子,性能再提升 10%-20% 2025.11
vLLM-Ascend 推理优化 PagedAttention + 昇腾适配,提升吞吐 2025.11

训练

博客 简介 时间
AReaL 全异步 RL 训练 全异步 RL + Single Controller,解耦式 Agentic RL 2026.3
FlashRecovery 训练故障恢复 降低检查点 I/O 与回滚重算损失 2025.12
SAM 投机解码 RL 训练 无辅助模型 SAM 投机解码,超 35% 长尾加速 2025.12

💬相关信息

🤝联系我们

本项目功能和文档正在持续更新和完善中,欢迎您持续关注。

  • 问题反馈:通过GitCode【Issues】提交问题。
  • 社区互动:通过GitCode【讨论】参与交流。
  • 技术专栏:通过GitCode【Wiki】获取技术文章。

项目介绍

CANN 学习中心仓,支持在线互动运行、边学边练,提供教程、示例与优化方案,一站式助力昇腾开发者快速上手。

定制我的领域

下载使用量

0

项目总下载次数(含Clone、Pull、 zip 包及 release 下载),每日凌晨更新

语言类型

Jupyter Notebook89.24%
C++4.93%
Python4.08%
CMake1.02%
AGS Script0.43%