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

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

分支15Tags15
文件最后提交记录最后更新时间
7 天前
1 个月前
4 个月前
19 天前
8 小时前
3 小时前
7 小时前
7 小时前
3 小时前
19 天前
3 小时前
6 天前
19 天前
4 天前
4 个月前
4 天前
4 天前
1 个月前
17 天前
17 天前
19 天前
17 天前
17 天前
3 个月前
3 个月前
19 天前
4 天前
19 天前
4 天前
4 天前
10 天前
10 天前
19 天前
9 个月前
2 个月前
19 天前
19 天前
19 天前
19 天前
19 天前
4 天前
4 天前
4 天前
1 个月前

CATLASS

Ask AI on DeepWiki

中文 | English

官方文档 | 算子开发用户旅程 | 社区例会 | 关于昇腾

最新动态

更多最新消息

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


📌 简介

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

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

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

Matmul性能对比

GroupedMatmul性能对比

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

不同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

👥 合作贡献者

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

科大讯飞 研究院工程组

📝 相关信息

项目介绍

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

定制我的领域