CANN/catlass Ascend950分组矩阵乘法反量化示例

CANN/catlass Ascend950分组矩阵乘法反量化示例 950_grouped_matmul_slice_m_per_token_dequant Example Readme【免费下载链接】catlass本项目是CANN的算子模板库提供NPU上高性能矩阵乘及其相关融合类算子模板样例。项目地址: https://gitcode.com/cann/catlass代码组织├── 47_ascend950_grouped_matmul_slice_m_per_token_dequant │ ├── CMakeLists.txt # CMake编译文件 │ ├── README.md │ └── grouped_matmul_slice_m_per_token_dequant_tla.cpp # 主文件功能介绍该CV融合算子实现了在ascend950上的分组矩阵乘法Grouped Matmul与反量化dequant操作。主要解决了高效执行分组、切片M轴矩阵乘法并融合per-token和per-channel反量化操作的需求。方案概述新增GroupedMatmulSliceMPerTokenTla模板类Kernel通过BlockMmad、Epilogue和Scheduler支持对一组groupCount的矩阵进行反量化计算。为Ascend950新增了Epilogue模板EpilogueAscend950PerTokenDequantTla实现了从GM加载量化系数、在同一UB执行反量化计算。为Ascend950新增了高性能反量化计算的Tile模板TilePerTokenDequant。参数说明名称/Name类型/Class数据类型/Dtype维度/Dims格式/Format描述/DescriptionmatAinTensorint8[m, k]ND左矩阵matBinTensorint8[groupCount, n, k]ND右矩阵支持转置groupListinTensorint32[groupCount]NDm轴方向分组大小累加和列表scaleinTensorbf16/fp16/fp32[groupCount, n]NDperChannel量化系数perTokeninTensorbf16/fp16/fp32[m]NDperToken量化系数matDoutTensorbf16/fp16/fp32[m, n]ND输出矩阵使用示例获取代码之后编译相应的算子可执行文件可参考quickstart本用例为Ascend950算子编译时需加-DCATLASS_ARCH3510执行算子# 编译指定用例 bash scripts/build.sh 47_ascend950_grouped_matmul_slice_m_per_token_dequant -DCATLASS_ARCH3510 cd output/bin # 可执行文件名|group数量|矩阵m轴|n轴|k轴|Device ID # group数量及矩阵m轴、n轴、k轴维度必须大于0 # Device ID可选默认为0 ./47_ascend950_grouped_matmul_slice_m_per_token_dequant 128 512 1024 2048 0执行结果如下说明精度比对成功。Compare success.【免费下载链接】catlass本项目是CANN的算子模板库提供NPU上高性能矩阵乘及其相关融合类算子模板样例。项目地址: https://gitcode.com/cann/catlass创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考