CHANGELOG
【免费下载链接】catlass本项目是CANN的算子模板库,提供NPU上高性能矩阵乘及其相关融合类算子模板样例。项目地址: https://gitcode.com/cann/catlass
CATLASS 1.X
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&优化
- 修复 TLAOriginShape与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泛化工程新增
- 更多样例
- StreamK Matmul算子
- W4A4低精度Matmul算子
- Matmul算子L2层级切分+错位分核
- Sparse 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
- 将
- 更多样例
- INT4类型反量化Matmul算子
- 2D卷积算子
- 单核切K优化Matmul算子
- 工具支持
- 新增msOpGen和接入文档
- msTuner_CATLASS工具新增
GroupedMatmulSliceM算子OptimizedMatmul算子
- 文档资料
- 新增INT8类型反量化GroupedMatmul算子的详设文档,介绍
groupMatmul+后处理类型的算子的设计思路和代码拆解 - 新增矩阵乘模板总结文档,介绍模板库已有的Matmul模板设计
- 新增CommonMatmul说明文档,介绍泛化Matmul工程中的基础模板
- 新增INT8类型反量化GroupedMatmul算子的详设文档,介绍
- Bugfix&优化
- 修复Flash Attention推理算子在softmax拷贝mask时引入的内存问题
- 修复文档错误
- catlass_optimize_guidance.md
- api.md
- quickstart.md
- tutorials.md
- 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参数
- 可在预设的算子模板中择优选取
更多样例
- Flash Attention推理算子
- 3D卷积算子
- A矩阵全加载Matmul算子
- 小矩阵优化Matmul算子
- MatmulRelu算子
- MatmulGelu算子
- MatmulSilu算子
- FP8类型反量化Matmul算子
- INT8类型反量化Matmul算子
工具支持
- 更新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
关键特性
- 提供Python调用CATLASS算子的工程组件
- 可编译pybind扩展及PyTorch扩展件
- 支持算子仿真运行(编译选项启用
--simulator) - 编译过程适配毕昇编译器(bisheng)
- 提供Python调用CATLASS算子的工程组件
更多样例
- 带偏置的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及各种不同的优化策略在内的算子样例
【免费下载链接】catlass本项目是CANN的算子模板库,提供NPU上高性能矩阵乘及其相关融合类算子模板样例。项目地址: https://gitcode.com/cann/catlass
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考