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

👥 合作贡献者

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

科大讯飞 研究院工程组

📝相关信息