CATLASS 项目文档
1 开发实践
代码实践,指导开发者按步骤上手CATLASS各层级代码开发和使用,逐渐具备完整算子开发、测试、调优、模型使用的能力。
开发流程
01快速开始:介绍模板库的环境准备,以及算子样例的编译和执行02Host 侧 Matmul 组装:讲解如何在 Host 侧组装 Matmul03Kernel 开发:拆解 Kernel 代码,介绍模板组装机制、Arguments、Params 和关键函数04Block Mmad 开发:拆解 Block Mmad 代码,介绍模板组装机制和主要接口05Block Scheduler 开发:拆解 Block Scheduler 代码,介绍模板组装机制和主要接口06Tile 开发:拆解 Tile Copy 和 Tile Mmad 代码,介绍模板组装机制和主要接口07Epilogue 适配:介绍 GEMM 算子在 Host、Kernel 层的 Epilogue 适配,以及 Epilogue 的 Block、Tile 开发08调测与分析:介绍调测工具使用、精度问题定位和性能瓶颈分析09样例贡献指南:介绍完整样例的设计、开发、测试和合入流程10创新样例开发指南:介绍创新样例的完整开发流程11Matmul 优化指南:介绍如何通过 Tiling 调参、应用不同的 Dispatch 策略快速获得性能提升12样例集成:介绍样例适配及接入整网的方式(待贡献)
调测与分析
- Ascend C Dump 工具:介绍 Ascend C 算子调试接口的使用方法
- msDebug 工具:介绍如何在 CATLASS 样例工程中使用 msDebug
- 性能分析工具:介绍 msProf、Profiling 等性能分析工具
- 打印工具:介绍算子调试中的打印方法
- 精度分析基础:介绍精度分析的基础知识
- 精度问题定位:介绍样例精度问题的定位方法
- 性能瓶颈分析与优化:介绍性能瓶颈分析及优化手段
专题实践
这里存放内部和外部贡献的专题实践文档。
- TLA 样例改造(待贡献)
- Atlas A2 到 Ascend 950 迁移指南:介绍 Atlas A2 平台存量算子向 Ascend 950 迁移的推荐方案
- Conv Kernel 开发:介绍 Conv 类算子的开发方法
- Conv Kernel 优化:介绍 Conv 类算子的性能优化方法
- FA Kernel 优化:介绍 FA 类算子的性能优化方法
- 融合算子优化:介绍 CV 融合算子的性能调优案例
- Kernel 直调:介绍通过
<<<>>>直调新开发算子
2 模块设计
项目概览
介绍项目定位、分层模块化设计和代码仓结构。
Kernel 设计
基础知识
- Atlas A2 硬件信息:介绍 Atlas A2 的硬件架构
- Atlas A2 GEMM 指令集:介绍 Atlas A2 GEMM 类样例涉及的硬件指令集
核心设计
01样例设计:汇总和索引仓库中的样例设计文档02Swizzle 策略:介绍影响 AI Core 计算基本块执行顺序的 Swizzle 策略03Dispatch 策略:介绍 Block Mmad 的重要模板参数 DispatchPolicy04矩阵乘模板总结:汇总 Matmul 样例模板、理论模板、工程优化和应用方式05自适应滑窗 Tiling:介绍自适应滑窗 Tiling 策略06低精度专题(待贡献)
TLA 设计
01Layout:介绍 TLA 的 Layout 结构和相关接口02LayoutTag:介绍 RowMajor、ColumnMajor、zN、nZ 等旧版布局标签和接口03Tensor:介绍 Tensor 结构
EVG 设计
01EVG 设计概览:介绍 EVG 的定位、分层关系、执行模型和图组织方式02EVG 扩展规范:说明何时增加 ComputeFn、何时增加节点及其实现约束03EVG 快速开始:以Matmul + Add为例介绍 EVG 的基础接入流程
3 API 文档
CATLASS API
相关 API
- Ascend C API:昇腾社区Ascend C API列表
4 附录
技术文章
基础入门
进阶主题
概念理解、问题定位、性能优化和优秀实践等内容待补充。
培训视频
昇腾社区在线课程
CATLASS 专题课程
- 【码力全开特辑】一站式掌握CATLASS模板库基本概念:CATLASS 学习系列课程第一讲,介绍 CATLASS 整体情况、算子快速上手、发展全景和生态共建
- 【码力全开特辑】CATLASS算子开发初体验:CATLASS 学习系列课程第二讲,以基础 Matmul 算子为例介绍基于 NPU 的矩阵乘理论建模和代码实现
- 【码力全开特辑】CATLASS模板库深度优化: CATLASS 学习系列课程第三讲,介绍使用 CATLASS 开发算子时的优化技巧