本项目是CANN的算子模板库,提供NPU上高性能矩阵乘及其相关融合类算子模板样例
CATLASS
Latest News
-
[2026/06] v1.6.0 发布:新增 MXFP8 / MXFP4 量化模板、EVG 声明式后处理框架、基于 Mutex 同步原语的 BlockMmad;新增 Ascend950 Tile 层组件 及全量 单元测试;新增 算子级测试框架(optest);新增 16 个Ascend950算子样例(如 StreamK Matmul、Flash Attention Chunk Prefill、Conv2d 等)。
-
[2026/04] v1.5.0 发布:新增 Ascend950 系列样例(如 基础 Matmul、Flash Attention 推理、Per-Group & Per-Block Quant Matmul TLA 等)、TLA 能力增强(含
origin_shape、TileView等);Matmul 泛化工程 新增 103 动态 W8A8 Per-Token 量化。
更多最新消息
-
[2026/03] 主线正式开始新增对下一代昇腾硬件Ascend 950PR/Ascend 950DT的支持
-
[2026/02] v1.4.0发布,新增 StreamK Matmul、W4A4 Matmul、Sparse Matmul等示例
-
[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项目介绍。
⚡️ 快速上手
为快速体验CATLASS的算子开发与使用,请参考下述内容。
-
快速入门:快速上手模板库使用,编译执行已有的算子样例。
-
基础开发指南:以基础Matmul算子为例,介绍基于CATLASS的算子开发实践;
-
开发者实践: 从算子各层代码编写至编译测试,再到Tiling调优与算子优化,从新手到进阶的实践示例。
📚 进阶参考
下述资料可助力您深入开展CATLASS算子的开发与调优,实现更优性能的GEMM类算子。
-
创新样例开发流程指南:从需求分析、方案设计到组件开发、测试合入的完整流程,帮助开发者快速掌握创新样例的开发方法;
-
矩阵乘模板总结:介绍模板库的Matmul理论模板和工程优化点,帮助开发者进行Matmul性能调优;
-
CATLASS设计总结: 汇总CATLASS工程的样例算法设计、swizzle策略、TLA设计等文档。
-
CATLASS API: 介绍CATLASS的分层特征与通用矩阵乘法GEMM API。
📁 目录结构说明
关键目录如下,详细目录参见项目目录。
catlass
├── 3rdparty # 三方依赖
├── cmake # 工程配置
├── docs # 文档
├── examples # 算子样例
├── include # 模板头文件
├── python # python类框架
├── scripts # 脚本
├── tests # 测试
└── tools # 工具
💻 软硬件配套说明
CATLASS所需的软硬件环境依赖如下:
- 昇腾产品:
- Atlas A2 训练系列产品 / Atlas A2 推理系列产品
- Atlas A3 训练系列产品 / Atlas A3 推理系列产品
- Ascend 950PR/Ascend 950DT
- CPU架构:
aarch64/x86_64 - 系统:CANN支持的Linux(进行兼容性查询)
- 软件依赖:
gcc>= 7.5, < 13.0cmake>= 3.16python>= 3.8, < 3.12 (如需编译单元测试,需gcc<= 12.0)
不同CATLASS发行版可支持的硬件平台及所需的最低CANN版本如下表:
| CATLASS版本 | 最低支持CANN包版本 | 支持昇腾产品 |
|---|---|---|
| 当前 | 8.5.0 9.0.0(Ascend 950PR/Ascend 950DT) |
Atlas A2 训练系列产品 / Atlas A2 推理系列产品 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 Ascend 950PR/Ascend 950DT |
| v1.5.0 | 8.2.RC1 9.0.0(Ascend 950PR/Ascend 950DT) |
Atlas A2 训练系列产品 / Atlas A2 推理系列产品 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 Ascend 950PR/Ascend 950DT |
| v1.4.0~v1.2.2 | 8.2.RC1 | Atlas A2 训练系列产品 / Atlas A2 推理系列产品 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 |
| v1.2.1~v1.0.0 | 8.2.RC1.alpha002 | Atlas A2 训练系列产品 / Atlas A2 推理系列产品 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 |
- 若您需要使用
TorchNPU进行精度测试等辅助开发,需要安装cann-ops包(如cann-910b-ops/cann-a3-ops/cann-950-ops)以调用其中的算子实现。在Ascend 950PR/Ascend 950DT系列产品中,cann-950-ops仅在CANN 9.0.0正式版提供。 - 为保证使用体验,请优先使用CANN正式版,beta版本可能存在兼容性问题。
下述环境经测试支持当前CATLASS构建:
| 系统 | CANN |
gcc |
cmake |
python |
|---|---|---|---|---|
| Ubuntu 20.04.5 | 8.5.0 | 9.3 | 3.16 | 3.10 |
| Ubuntu 22.04.5 | 8.5.0 | 11.3 | 3.22 | 3.10 |
| openEuler 22.03 SP4 | 8.5.0 | 10.3 | 3.22 | 3.10 |
| Ubuntu 22.04.5 (编译950样例) | 9.0.0 | 11.3 | 3.22 | 3.10 |