BasicMatmulTlaGemv Example Readme【免费下载链接】catlass本项目是CANN的算子模板库提供NPU上高性能矩阵乘及其相关融合类算子模板样例。项目地址: https://gitcode.com/cann/catlass注意社区包暂不支持950能力后续支持的版本敬请期待代码组织├── 50_ascend950_basic_matmul_gemv │ ├── CMakeLists.txt # CMake编译文件 │ ├── README.md │ └── basic_matmul_tla.cpp # 主文件使用示例获取代码之后编译相应的算子可执行文件可参考quickstart本用例为Ascend950算子编译时需加-DCATLASS_ARCH3510执行算子# 编译指定用例 bash scripts/build.sh 50_ascend950_basic_matmul_gemv -DCATLASS_ARCH3510 cd output/bin # 可执行文件名 |矩阵m轴|n轴|k轴|Device ID # Device ID可选默认为0 ./50_ascend950_basic_matmul_gemv 1 128 127 0执行结果如下说明精度比对成功。Compare success.使用说明BasicMatmul默认使用的DispatchPolicy MmadPingpong支持以下几个模板参数模板参数默认值参数说明ArchTag无指定架构型号enableUnitFlagfalse是否开启Unitflag开启L0C多缓冲时必须设置为falseuseHF32false是否开启HF32仅float类型支持l0CStages1指定L0C的缓冲区数量设置为2即可开启L0C双缓冲enableL1Residentfalse是否开启L1常驻l1AStages1L1上加载矩阵A的Buffer数量l1BStages1L1上加载矩阵B的Buffer数量l0AStages1L0上加载矩阵A的Buffer数量l0BStages1L0上加载矩阵B的Buffer数量设矩阵Shape为M N K, L1上的分块大小为m1 n1 k1M方向的分块数量mTiles CeilDiv(M, m1)N方向的分块数量nTiles CeilDiv(N, n1)总任务数为taskBlocks mTiles * nTiles在以下两种情况下可以选择开启enableL1Resident1.mTlies 1且nTiles CoreNum且K 2 * k1。此时还可以设置l0CStages2(需要关闭enableUnitFlag)如果空间不足无法设置l0CStages2则将n1设置为原来的一半。2.nTlies 1且mTiles CoreNum, 且K 2 * k1。此时还可以设置l0CStages2(需要关闭enableUnitFlag)如果空间不足无法设置l0CStages2则将m1设置为原来的一半。【免费下载链接】catlass本项目是CANN的算子模板库提供NPU上高性能矩阵乘及其相关融合类算子模板样例。项目地址: https://gitcode.com/cann/catlass创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考