CATLASS

🔥 Latest News

  • [2025/09] CATLASS模板库正式开源

📌 简介

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

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

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

🧩 模板分层设计

api_level

分层详细介绍和各层级api,见api文档。

📁 目录结构说明

catlass
├── cmake          # cmake工程文件
├── docs           # 文档
├── examples       # kernel算子样例
├── include        # 模板头文件
├── scripts        # 编译脚本
|   └── build.sh   # 算子样例编译脚本
├── tests          # 测试用例
└── tools          # 相关工具

💻 软硬件配套说明

  • 硬件平台:

    • CPU: aarch64/x86_64
    • NPU: Atlas A2 训练系列产品/Atlas 800I A2 推理产品/A200I A2 Box 异构组件
      • Atlas 800T A2 训练服务器
      • Atlas 900 A2 PoD 集群基础单元
      • Atlas 200T A2 Box16 异构子框
      • Atlas 800I A2 推理服务器
      • A200I A2 Box 异构组件
  • 软件版本:

    • gcc >= 7.5, < 13(已测试7.58.39.311.4,建议使用9.3以上版本。)
    • cmake >= 3.22
    • python >= 3.10
  • CANN版本:

  • 对于某些调测工具,可能需要较以上版本更加新的CANN版本,可参考调测工具文档

⚡️ 快速上手

00_basic_matmul算子样例为例,快速上手CATLASS算子开发:

  1. 使能CANN环境变量 关于CANN环境准备请参考官网安装说明
# root用户安装(默认路径)
source /usr/local/Ascend/ascend-toolkit/set_env.sh
  1. 编译算子样例 在主目录下,执行下述指令。
bash scripts/build.sh 00_basic_matmul
  1. 执行算子样例 切换到可执行文件的编译目录output/bin下,运行算子样例程序如下。
cd output/bin
# 可执行文件名 |矩阵m轴|n轴|k轴|Device ID(可选)
./00_basic_matmul 256 512 1024 0

出现Compare success.打屏,说明算子运行成功,精度比较通过。

📚 文档介绍

📖 基础文档

按照由浅入深的次序,对模板库的相关内容展开介绍。

  • quickstart - 快速上手实践模板库,以基础的Matmul算子开发为实践背景认识使用模板库。
  • catlass_optimize_guidance - 模板库的进阶教程,介绍模板库下的基础调优方式,如何通过Tiling调参、应用不同的Dispatch策略的方式,快速获得性能提升。
  • api - 介绍CATLASS模板库的通用矩阵乘法Gemm API。
  • swizzle_explanation - 对模板库中Swizzle策略的基本介绍,这影响了AI Core上计算基本块间的顺序。
  • dispatch_policies - 对模板库在Block层面上BlockMmad中的一个重要模板参数DispatchPolicy的介绍。

🧰 调测工具文档

我们已经在CATLASS示例工程中适配了大多数CANN提供的调测工具,开发算子时,可基于CATLASS示例工程进行初步开发调优,无需关注具体的工具适配操作,待算子基础功能、性能达到预期,再迁移到其他工程中。

🚗 功能调试

  • msDebug - 类gdb/lldb的调试工具msDebug
  • printf - 在算子device代码进行打印调试
    • ⚠️ 注意 此功能依赖社区版CANN包版本在CANN 8.3后(如8.3.RC1.alpha001)。

✈️ 性能调优

👥 合作贡献者

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

科大讯飞 研究院工程组

📝相关信息