CHANGELOG
CATLASS 2.X
CATLASS 2.0.0
CATLASS DSL
- 正式上线CATLASS DSL支持Pythonic Kernel,原生支持Tile编程。在 AscendNPU-IR 的基础上构建 TLA Dialect,将 Python 中描述的 TLA 操作降级为 MLIR,并由 AscendNPU-IR 工具链编译为可执行的核函数产物。
- 覆盖矩阵乘、向量计算、动态控制流等完整算子表达能力,
tla.print支持GM/UB上的格式化标量输出及动态控制流内 tensor/scalar 打印 - Host 侧提供统一的 tensor 构造入口
from_dlpack/make_fake_tensor,支持@dataclass结构体作为 kernel 入参
- 覆盖矩阵乘、向量计算、动态控制流等完整算子表达能力,
- 样例
- Basic Mmad:基础矩阵乘示例,basic_matmul、basic_matmul_atomic_add、basic_matmul_mutex、basic_matmul_mutex_with、basic_mmad_ptr(mutex / atomic_add / ptr 多路径)
- Basic Mixed:基础CV算子示例,basic_mixed、basic_mixed_mutex、basic_mixed_fixpipe_nz2dn、basic_mixed_store_zN、basic_mixed_store_zNUnAlign、basic_mixed_ub2l1(混合 copy+mmad 场景)
- Matmul Epilogue:后处理类CV融合样例,matmul_add、matmul_add_ub、matmul_bias、matmul_leaky_relu、matmul_sigmoid、matmul_silu、matmul_tanh
- StreamK Matmul:StreamK 调度矩阵乘,normal tile 全 K 计算 + 尾轮 tile 多核切 K 归约
- Multi Core SplitK Matmul:多核切 K 矩阵乘,multi_core_splitk_matmul、tail_multi_core_splitk_matmul
- Batched Matmul:批量矩阵乘
- Grouped Matmul Slice M:按 M 轴切分的分组矩阵乘
- Flash Attention Infer:推理Flash Attention样例demo,支持非Mask非Paged场景,支持对齐/非对齐输入
- 工具支持
- 构建体系:基于 AscendNPU-IR 子模块构建,提供 Docker 开发镜像,支持 CANN >= 9.1.0
- 文档资料
CATLASS C++
- 关键特性
- 新增 CATLASS官方文档站,为开发者提供一站式学习与开发体验
- 新增 catlass_cppgen 代码生成框架:基于 Python 的算子代码生成框架,支持定义算子参数、选择优化策略并自动生成 C++ 核函数代码,覆盖 GEMM 与 GroupGEMM 类算子,配套 EVG、OpTensor 等 API 文档与单元测试
- 更多样例(新增样例 9 个,其中 Ascend950 样例 6 个、AtlasA2 样例 3 个)
- Ascend950 Svd Quant Matmul:SVD 低秩分解量化,主通路 W4A4 量化 + 低秩旁路高精度计算
- Ascend950 Dual-Level Quant MX BatchMatmul:二级量化 + MXFP4 BatchMatmul
- Ascend950 Grouped MXFP8 Matmul SwiGLU MX Quant:Grouped MXFP8 矩阵乘 + SwiGLU + MXFP8 量化
- Ascend950 Grouped MXFP8 Matmul Finalize Routing:Grouped MXFP8 矩阵乘 + Finalize Routing 融合,提供确定性与非确定性两个版本
- Ascend950 A8W4 Grouped MX Matmul:伪量化场景的 A8W4 Grouped MX 矩阵乘
- Ascend950 Grouped Matmul Slice M Gelu:Grouped Matmul SliceM + Gelu 融合
- AtlasA2 Symm:对称矩阵乘
- AtlasA2 Trmm:三角矩阵乘
- AtlasA2 Planar Complex Matmul:平面复数矩阵乘,输出实部与虚部两路结果
- 工具支持
- optest 接口扩展至 72 个,新增 Symm、Trmm、PlanarComplexMatmul、GroupedMatmulSliceMGelu、A8W4GroupedMxMatmul 等 10 个接口
- Agent Skill 新增 CANNBot CATLASS C++、CANNBot CATLASS DSL算子自动生成工具链,及A2/A3 向 Ascend950 迁移工作流和Tile 层级单元测试编写技能
- 文档资料
- 更新 README 中 gcc 版本约束说明
- 更新 Gemm/Tile UT 依赖说明
- Bugfix&优化
- MLA 算子优化:加入
AMLATp1Spec特化Kernel模板,采取KV-split 均衡分核策略,并修复golden类型读取错误问题 - 修复 Ascend950 A8W4 MxMatmul 样例在非对齐场景下的精度问题
- 修复 Ascend950 MxGroupedMatmulSliceM 样例在 MxFp4 类型和transB场景下的精度问题
- 修复 optest下的Quant Optimized Matmul Tla 在非对齐 shape 下 JIT 编译失败的问题
- MLA 算子优化:加入
CATLASS 1.X
CATLASS 1.6.0
- 关键特性
- 全面支持 Ascend950,新增全套 Tile层组件(文档见Gemm/Tile类模板概述),兼容 Atlas A2/A3,并新增对 AtlasA2/AtlasA3 及 Ascend950 架构下Gemm类全量Tile层组件的单元测试
- 新增 MXFP8 / MXFP4 量化模板体系,基于Ascend950架构支持 MXFP8/MXFP4 量化矩阵乘、A8W4 MX矩阵乘等样例
- 新增 基于Mutex 同步原语的 BlockMmad,提供更简化的block组件代码实现
- 新增 EVG 声明式后处理框架,支持以声明式方式描述 Epilogue 后处理逻辑
- 支持使用 AscendC CMake 构建系统编译
- 更多样例 (新增Ascend950 样例16个,AtlasA2/AtlasA3 样例1个)
- Ascend950 Flash Attention Chunk Prefill
- Ascend950 MXFP8 Matmul
- Ascend950 MXFP4 Matmul
- Ascend950 A8W4 MX Matmul
- Ascend950 MXFP8 BatchMatmul
- Ascend950 MXFP8/MXFP4 GroupedMatmul
- Ascend950 Matmul Full Dequant
- Ascend950 Broadcast Matmul PerBlock Quant
- Ascend950 matmul Evg
- Ascend950 GroupedMatmul
- Ascend950 BatchedMatmul
- Ascend950 Matmul FullLoadA
- Ascend950 StreamK Matmul
- Ascend950 MultiCoreSplitkMatmul
- Ascend950 TailMultiCoreSplitkMatmul
- Ascend950 Conv2d
- AtlasA2 Quant Matmul 多核切K
- 工具支持
- 新增 算子级测试框架(optest),支持 JIT 与 Prebuilt 两种模式,使用弱符号机制统一 prebuilt kernel 加载,并完成 63 个存量及新增样例的 torch_catlass 测试接口接入,覆盖 Matmul、GroupedMatmul、FlashAttention等算子类型
- msTuner 工具增强:支持 -xasc 编译及 Ascend950 架构寻优
- 新增 Agent Skill 开发工具,当前具备支持生成样例torch接口、生成样例optest交付件等场景的自动化功能
- 新增 CI/构建辅助设施:pre-commit 脚本、依赖描述文件等
- 文档资料
- 新增 EVG 声明式后处理框架文档
- 新增 存量非 TLA 算子向 Ascend950 平台迁移文档
- tile 相关 API 文档 补充完善
- 文档新增中英文目录,完成多轮纠错整改及跳转链接修复
- Bugfix&优化
- 将原本的fftsAddr替换为hardwareSyncAddr,使用aclrtGetHardwareSyncAddr接口获取
- 修复 EpilogueAtlasA2PerTokenDequant 同步缺少导致的 RAW 内存竞争问题
- 修复 quant_matmul TLA 版本针对 zN 输入的 Bug
- 修复 RemovePaddingNDAndCast 中 compute length 可能不对齐的问题
- 修复部分样例的 uint32/int32 溢出隐患
CATLASS 1.5.0
- 关键特性
- 新增支持 Ascend950 架构与配套底层模板组件
- TLA 增强:引入
origin_shape,新增TileView、MakeTensorLike、Tensoroperator()等接口,并完善布局与张量表达 - Matmul 泛化工程扩展:支持 W8A8 Per-Token + Per-Channel 动态量化路径、分批编译,并补充相关设计文档
- FixPipe 能力延伸:新增/完善 Matmul FixPipe 优化与 GMM + FixPipe + Dequant 等组合模板与样例
- 适配 CANN 9.0.0.beta2;在使用 g++ 与毕昇工具链链接时,需显式链接 profapi(编译器非兼容性变更说明)
- 新增 单元测试(unittest)与 CI 对 Ascend950 的适配
- 更多样例
- Ascend950 基础 Matmul
- Ascend950 Matmul FixPipe 优化
- Ascend950 Grouped Matmul SliceM Per-Token Dequant
- Ascend950 Grouped Matmul Per-Tensor & Per-Channel Dequant
- Ascend950 Flash Attention 推理
- Ascend950 基础 Matmul GEMV
- Ascend950 Quant Matmul Per-Group & Per-Block TLA(Per-Group × Per-Block 量化组合)
- Quant Optimized Matmul TLA
- Quant Matmul Full LoadA TLA
- Strided Batched Matmul TLA
- Matmul 泛化工程:动态 W8A8 Per-Token 量化
- 工具支持
- shared_lib 输出产物增加 soname,Python 扩展依赖的共享库切换为带版本信息的
.so - Python 扩展 支持
build.sh编译选项传入,并支持异步模式;更新设备侧取指针等接入方式 - msTuner_CATLASS 扩展 GEMM 配置与搜索空间;MatmulGelu 样例接入寻优示例
- shared_lib 输出产物增加 soname,Python 扩展依赖的共享库切换为带版本信息的
- 文档资料
- 文档目录与资源路径调整(如 figures 目录),并做纠错与内容修订
- 泛化工程补充 MultiCoreSplitK、StreamK、单核切 K 等相关说明文档
- 修复 ascendc_dump 文档 中的错误表述
- Bugfix&优化
- 修复 TLA OriginShape 与 Flash Attention Golden 等相关问题;完善 Ascend950 FA 的 Block/Epilogue 等实现路径
- 调整 CopyGmToL1 中
blockLen计算逻辑,无需再为对齐 C0_NUM_PER_FRACTAL 做不必要向上取整 - Nan 专项:在
exp11等路径为 Ki=0 场景补充清零,避免脏数据影响模型精度 - 修复 CopyL0CToDstQuantMode 等问题;Ascend950 架构标识由 3501 更正为 3510
- 修复间接头文件引用、License 注释与多处文档笔误;持续消除代码规范告警与风格清理
CATLASS 1.4.0
- 关键特性
- Matmul泛化工程新增
LocalPaddingCPaddingCommonMatmul模板,使用局部workSpace对C矩阵做padding
- Matmul泛化工程新增
- 更多样例
- 工具支持
- 增加shared_lib使用示例
- 文档资料
- 新增单核切K优化Matmul算子的详设文档,介绍单核切K矩阵乘的设计思路和代码拆解
- 新增主页Matmul/GroupedMatmul算子性能展示数据
- msdebug文档新增驱动支持检查
- Bugfix&优化
- 优化grouped_matmul_slice_m样例支持
groupList分段式输入 - BlockMmad增加
TileShape的32B对齐约束 - 修复w4a8 matmul样例构造数据长度问题
- Matmul泛化工程支持Stride大于Shape的场景
- msTuner_CATLASS工具支持
quant Matmul做tiling寻优 - 修复device侧对
cmath函数的不规范使用 - 修复MatmulSilu精度问题和命名错误
- 修复cast_int4_to_int8组件的Vector同步问题
- 修复w8a16 Matmul算子half类型使用问题
- 修复单核切K Matmul算子在
RemovePaddingNDAndCastC为空时的逻辑问题
- 优化grouped_matmul_slice_m样例支持
CATLASS 1.3.0
- 关键特性
- 将
CMake最低版本要求从3.22降至3.16 - 支持
FixPipe随路量化 - Matmul泛化工程新增
PaddingCommonMatmulSmallMatmulPaddingMultiCoreSplitkMatmulPaddingStreamkMatmul单核切K系列模板动态Swizzle
- 将
- 更多样例
- 工具支持
- 新增msOpGen工具代码示例basic_matmul和接入文档
- msTuner_CATLASS工具新增
GroupedMatmulSliceM算子OptimizedMatmul算子
- 文档资料
- 新增INT8类型反量化GroupedMatmul算子的详设文档,介绍
groupMatmul+后处理类型的算子的设计思路和代码拆解 - 新增矩阵乘模板总结文档,介绍模板库已有的Matmul模板设计
- 新增CommonMatmul说明文档,介绍泛化Matmul工程中的基础模板
- 新增INT8类型反量化GroupedMatmul算子的详设文档,介绍
- Bugfix&优化
- 修复Flash Attention推理算子在softmax拷贝mask时引入的内存问题
- 修复文档错误
- Matmul泛化工程更新
- 修改
TilingParams读取方式增强可读性 - 优化原有的
Splitk ReduceAdd,UB空间利用更充分 - 新增
CMakeLists.txt中对python环境的判断
- 修改
- 修复OptimizedMatmul算子在kernel里没有支持PADDING_NZ的问题
- 优化重构FP8类型反量化Matmul算子,使其更符合Prologue范式
- 修复MatmulBias算子精度问题并增加对bf16的校验拦截
- 优化仿真的编译逻辑以及在A3环境下的编译问题,现在编译
simulator模式时逻辑与上板模式相同 - msTuner_CATLASS工具更新
- 新增接口替换、非法字符、
groupCount最大值检查等安全校验 - 修复下发部分算子时默认传入
ffts_addr被拦截的问题
- 新增接口替换、非法字符、
- 更改默认的跨核标志位可连续置位次数,避免超过次数后引发的系统卡死问题
CATLASS 1.2.0
-
关键特性
- 算子编译时支持传入计算平台架构
- 新增Matmul泛化工程示例
- 自动依照特征尺寸确定Tiling参数
- 可在预设的算子模板中择优选取
-
更多样例
-
工具支持
- 更新Python调用接口内容
- 调整工程组织结构
- 支持转置情况
- 新增
msTuner_CATLASS工具,用于Tiling自动寻优,在搜索空间内全量运行并获取性能数据 - 支持使能
msSanitizer地址消毒工具(编译选项加入--enable_mssanitizer)
- 更新Python调用接口内容
-
文档资料
- 新增
catlass_optimize_guidance.md文档,介绍CATLASS赋能下Gemm类算子常用的调优方式
- 新增
-
Bugfix&优化
- 优化
OptimizedMatmul算子实现,支持任意Padding方式组合 - 修复
ASCEND_RT_VISIBLE_DEVICES环境变量使能下,msTuner_CATLASS工具无法取得实际运行DeviceId的问题 - 修复PFA算子样例在单行数据场景下
Set/Wait错配的异常情形 - 修复
OptimizedMatmul算子样例计算Workspace大小出错 - 隔离使能
AscendC::Dump及AscendC::print功能的代码段 - 修复
GroupedMatmulSliceK算子在Ki=0特例时的输出清零行为,并将真值比较逻辑调整为全尺寸(M,N,K)比较 - 修改
performance_tools.md,tutorials.md等文档中的错误
- 优化
CATLASS 1.1.0
-
关键特性
-
更多样例
- 带偏置的MatmulBias算子
- 预加载(Preload)优化Matmul算子 (科大讯飞联创贡献)
- K轴切分(Split-K)优化Matmul算子 (科大讯飞联创贡献)
-
工具支持
- 支持
AscendC::Dump与AscendC::printf进行打印调试- 编译选项中加入
--enable_ascendc_dump和--enable_print以启用上述功能 - 请参阅文档:
ascendc_dump和print
- 编译选项中加入
- 支持
-
文档资料
- 新增tutorials快速上手示例
- 新增利用msProf工具进行算子性能调测的文档:msProf性能调测
-
Bugfix&优化
- 优化
Kernel层AIC程序,添加PIPE_ALL避免整网影响 - 优化
OptimizedMatmul算子实现,在非必要Padding场景下不启动AIV核 - 修复
Block层预加载nextBlock时的错误 - 隔离Kernel侧
AscendC的inline定义,避免异构编程时无法使用部分标准库 - 修改
l2offset设置的重定义问题
- 优化
CATLASS 1.0.0
-
CATLASS模板库正式开源发布
-
关键特性
- 提供Kernel、Block、Tile、Basic分层算子开发能力
-
样例参考
- 提供包括基础Matmul及各种不同的优化策略在内的算子样例