CANN/catlass Swizzle策略说明

张开发
2026/5/10 3:33:47 15 分钟阅读

分享文章

CANN/catlass Swizzle策略说明
Swizzle策略说明【免费下载链接】catlass本项目是CANN的算子模板库提供NPU上高性能矩阵乘及其相关融合类算子模板样例。项目地址: https://gitcode.com/cann/catlassSwizzle策略决定了AI Core计算基本块的顺序。调整Swizzle策略有助于提高缓存命中率、减小数据读取开销从而提高矩阵乘整体计算效率。下方展示了3种Swizzle策略。图中每一个方块表示C矩阵的一个基本块方块中的序号代表AI Core的编号该示例中假设AI Core数量为20。箭头方向指示了特定Swizzle策略下基本块的遍历顺序我们按照该顺序将基本块依次分配给AI Core进行处理编号0~19的20个基本块是并行计算的。示例1默认的Swizzle策略为SwizzleOffset1、SwizzleDirection0即using BlockScheduler typename Gemm::Block::GemmIdentityBlockSwizzle;示例2SwizzleOffset3、SwizzleDirection0using BlockScheduler typename Gemm::Block::GemmIdentityBlockSwizzle3, 0;示例3SwizzleOffset3、SwizzleDirection1using BlockScheduler typename Gemm::Block::GemmIdentityBlockSwizzle3, 1;Swizzle策略选择如果C矩阵的大小为M x N那么当M N时采用SwizzleOffset3、SwizzleDirection0通常情况下能够达到较好的性能当M N时采用SwizzleOffset3、SwizzleDirection1通常情况下可以达到较好的性能。开发者也可以探索其他参数设置以达到更高的缓存命中率从而进一步提高矩阵计算性能。【免费下载链接】catlass本项目是CANN的算子模板库提供NPU上高性能矩阵乘及其相关融合类算子模板样例。项目地址: https://gitcode.com/cann/catlass创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

更多文章