catlass:基于昇腾生态的高性能矩阵乘算子模板库项目

本项目是CANN的算子模板库,提供NPU上高性能矩阵乘及其相关融合类算子模板样例。

分支13Tags11
文件最后提交记录最后更新时间
将rtGetC2cCtrlAddr替换为aclrtGetHardwareSyncAddr11 小时前
修正错误的license注释2 个月前
增加unittest单元测试2 个月前
版本相关代码与文档优化1 个月前
将rtGetC2cCtrlAddr替换为aclrtGetHardwareSyncAddr11 小时前
修复49FAInfer bin size is 0报错5 小时前
补充Ascend950代际下Tile层组件(兼容原AtlasA2代际接口)2 小时前
update: 更新文件 oat_check.sh12 天前
补充Ascend950代际下Tile层组件(兼容原AtlasA2代际接口)2 小时前
[feature] mstuner_catlass supports arch Ascend950 and the kernel 43_ascend950_basic_matmul21 天前
add precommit scripts1 个月前
补充23,43 torch_catlass接口8 天前
增加unittest单元测试2 个月前
update: 更新文件 .pre-commit-config.yaml1 个月前
Agent skill目录结构创建及torch测试的skill28 天前
切换最低兼容版本为CANN 8.5.0;使用AscendC CMake构建系统编译2 个月前
新增算子级测试框架22 天前
[bugfix]文档低错整改以及images目录更新为figures2 个月前
增加dockerfile1 个月前
增加dockerfile1 个月前
更新许可证到CANN2.0版本8 个月前
文档新增中英文目录、低错整改,及代码实践类文档更新1 个月前
update owners2 个月前
增加依赖描述文件22 天前
[bugfix]文档低错整改以及images目录更新为figures2 个月前
new: 新建文件 Third_Party_Open_Source_Software_List.yaml4 个月前
添加OAT.xmlThird_Party_Open_Source_Software_Notice7 个月前
增加依赖描述文件22 天前
增加依赖描述文件22 天前
增加依赖描述文件22 天前
增加依赖描述文件22 天前
增加依赖描述文件22 天前
修复获取socName时的分支错误3 天前
增加依赖描述文件22 天前

CATLASS


⚠ 重要变更

我们于2026年3月第一次社区会议正式确定CATLASS社区主线将开始新增对下一代昇腾硬件Ascend 950PR/Ascend 950DT的支持。为在不同平台区分底层接口的实现,该新增支持将引入新的编译宏,用户需要注意在对应编译命令中进行相应适配。

  • 新增宏:CATLASS_ARCH,用于指定目标架构。其取值可在SIMD BuiltIn关键字中查询(__NPU_ARCH__列)。

    • Atlas A2 训练系列产品 / Atlas A2 推理系列产品2201
    • Atlas A3 训练系列产品 / Atlas A3 推理系列产品2201
    • Ascend 950PR/Ascend 950DT3510
  • 相关场景说明:

    • bisheng命令行场景:bisheng ... -DCATLASS_ARCH=2201 ...
    • cmake场景:add_compile_definitions(CATLASS_ARCH=2201)
    • msopgen/aclnn工程场景:
      • 旧写法:add_ops_compile_options(ALL OPTIONS -DCATLASS_ARCH=2201 ...)
      • 新写法:npu_op_kernel_options(ascendc_kernels ALL OPTIONS -DCATLASS_ARCH=2201)(msopgen工程中,第一个参数默认为ascendc_kernels,可根据实际情况进行调整)
    • CATLASS源码仓:bash scripts/build.sh -DCATLASS_ARCH=2201 ...
    • 库上代码参考:examples/CMakeLists.txt

Latest News

请参阅CHANGELOG以查看当前及历史版本的详细更新内容。


📌 简介

CATLASS(CANN Templates for Linear Algebra Subroutines),中文名为昇腾算子模板库,是一个聚焦于提供高性能矩阵乘类算子基础模板的代码库。

通过抽象分层的方式将矩阵类算子代码模板化,从而实现算子计算逻辑的白盒化组装,让算子代码可复用,可替换,可局部修改。针对昇腾硬件特点进行设计,可以支持复杂场景流水排布,如Flash Attention等算子。在上层代码逻辑共享的同时,支持底层硬件差异特化。

模板库针对定制场景使能快速开发能力,提供不同场景下的性能优化模块供开发者组装定制,在定制shape下的性能能达到相应算子标杆性能的0.98~1.2倍。

Matmul性能对比
GroupedMatmul性能对比

本代码库为CATLASS联创代码仓。结合昇腾生态力量,共同设计研发算子模板,并提供典型算子的高性能实现代码样例,概述详情参考这里

⚡️ 快速上手

为快速体验CATLASS的算子开发与使用,请参考下述内容。

  • 快速入门:快速上手模板库使用,编译执行已有的算子样例。

  • 基础开发指南:以基础Matmul算子为例,介绍基于CATLASS的算子开发实践;

  • 开发者实践: 从算子各层代码编写至编译测试,再到Tiling调优与算子优化,从新手到进阶的实践示例。

📚 进阶参考

下述资料可助力您深入开展CATLASS算子的开发与调优,实现更优性能的GEMM类算子。

  • CATLASS API: 介绍CATLASS的分层特征与通用矩阵乘法GEMM API。

  • CATLASS设计总结: 汇总CATLASS工程的样例算法设计、swizzle策略、TLA设计等文档。

📁 目录结构说明

关键目录如下,详细目录参见项目目录

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所需的软硬件环境依赖如下:

不同CATLASS发行版可支持的硬件平台及所需的最低CANN版本如下表:

CATLASS社区版本 最低支持CANN包版本 支持昇腾产品
当前 8.5.0
9.0.0.beta2(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.beta2(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 推理系列产品
  • 若您需要使用pytorch进行精度测试等辅助开发,需要安装cann-ops包(如cann-910b-ops/cann-a3-ops/cann-950-ops以调用其中的算子实现。在Ascend 950PR/Ascend 950DT系列产品中,cann-950-ops仅在CANN 9.0.0正式版提供。

下述环境经测试支持当前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.beta2 11.3 3.22 3.10

👥 合作贡献者

华南理工大学 陆璐教授团队

科大讯飞 研究院工程组

📝相关信息

项目介绍

本项目是CANN的算子模板库,提供NPU上高性能矩阵乘及其相关融合类算子模板样例。

定制我的领域