CATLASS
Latest News
- [2025/12] 社区版v1.3.0发布,支持
FixPipe随路量化,Matmul泛化工程新增多个模板,并新增INT4反量化、2D卷积等示例 - [2025/10] 社区版v1.2.0发布,新增Matmul算子泛化等示例
- [2025/09] CATLASS模板库正式开源
请参阅CHANGELOG以查看当前及历史版本的详细更新内容。
📌 简介
CATLASS(CANN Templates for Linear Algebra Subroutines),中文名为昇腾算子模板库,是一个聚焦于提供高性能矩阵乘类算子基础模板的代码库。
通过抽象分层的方式将矩阵类算子代码模板化,从而实现算子计算逻辑的白盒化组装,让算子代码可复用,可替换,可局部修改。针对昇腾硬件特点进行设计,可以支持复杂场景流水排布,如Flash Attention等算子。在上层代码逻辑共享的同时,支持底层硬件差异特化。
模板库针对定制场景使能快速开发能力,提供不同场景下的性能优化模块供开发者组装定制,在定制shape下的性能能达到相应算子标杆性能的0.98~1.2倍。
本代码库为CATLASS联创代码仓。结合昇腾生态力量,共同设计研发算子模板,并提供典型算子的高性能实现代码样例,概述详情参考这里。
⚡️ 快速上手
为快速体验CATLASS的算子开发与使用,请参考下述内容。
- 快速入门:快速上手模板库使用,编译执行已有的算子样例。
- 基础开发指南:以基础Matmul算子为例,介绍基于CATLASS的算子开发实践;
- 开发者实践: 从算子编写至编译测试,再到Tiling调优与算子优化,从新手到进阶的实践示例。
📚 进阶参考
下述资料可助力您深入开展CATLASS算子的开发与调优,实现更优性能的GEMM类算子。
- CATLASS API: 介绍CATLASS的分层特征与通用矩阵乘法GEMM API。
- CATLASS性能调测: 汇总CATLASS工程开发中的调测办法,有助于消除漏洞,分析性能的瓶颈点。
- CATLASS进阶实践: 汇总CATLASS的进阶知识,如Tiling调参方法、Dispatch策略等,实现更高性能。
📁 目录结构说明
关键目录如下,详细目录参见项目目录。
catlass
├── cmake # cmake工程文件
├── docs # 文档存放目录
├── examples # kernel算子样例总目录
| ├── 00_basic_matmul # 单算子样例
| | ├── basic_matmul.cpp # Host侧算子调用
| | ├── CMakeLists.txt
| | └── README.md # 算子说明示例
| ├── ...
| └── python_extension # Python调用CATLASS算子
| # 的工程组件
├── include # 模板头文件集
| ├── catlass # 不同层级的算子实现逻辑
| └── tla # 计算关联的基础数据结构
├── scripts # 编译脚本
| └── build.sh # 算子样例编译脚本
├── tests # 测试用例
└── tools # 相关工具
└── tuner # Tiling自动寻优工具
💻 软硬件配套说明
CATLASS所需的软硬件环境依赖如下:
- 昇腾产品:Atlas A2训练/推理产品, Atlas A3训练/推理产品
- CPU架构:
aarch64/x86_64 - 系统:支持的Linux(进行兼容性查询)
- 软件依赖:
gcc>= 7.5, < 13.0cmake>= 3.16python>= 3.8, < 3.12
不同CATLASS发行版可支持的硬件平台及所需的最低CANN版本如下表:
| CATLASS社区版本 | 最低支持CANN包版本 | 支持昇腾产品 |
|---|---|---|
| v.1.2.2 及以上 | 社区版8.2.RC1 | Atlas A2训练/推理产品 Atlas A3训练/推理产品 |
| v1.2.1~v1.0.0 | 社区版8.2.RC1.alpha002 | Atlas A2训练/推理产品 Atlas A3训练/推理产品 |
- 对于某些调测工具,可能需要较上述更新的CANN版本,详情参考调测工具文档。
下述环境经测试支持当前CATLASS构建:
| 系统 | CANN |
gcc |
cmake |
python |
|---|---|---|---|---|
| Ubuntu 20.04.5 | 8.2.RC1 |
9.3 |
3.16 |
3.10 |
| Ubuntu 22.04.5 | 8.2.RC1 |
11.3 |
3.22 |
3.10 |
| openEuler 22.03 SP4 | 8.2.RC1 |
10.3 |
3.22 |
3.10 |