StreamkMatmul Example Readme

代码组织

├── 37_streamk_matmul
│   ├── CMakeLists.txt     # CMake编译文件
│   ├── README.md
│   └── streamk_matmul.cpp # 主文件

模板说明

该模板为切尾轮基本块的多核切K模板,通过切分尾轮基本块的K,划分出更多的任务块,从而利用更多的核心参与尾轮的基本块计算。 该模板切分时将尾轮的计算量直接均分到所有计算核心上。

# 编译指定用例
bash scripts/build.sh 37_streamk_matmul
cd output/bin
# 可执行文件名 |矩阵m轴|n轴|k轴|Device ID
# Device ID可选,默认为0
./37_streamk_matmul 256 512 1024 0

执行结果如下,说明精度比对成功。

Compare success.

使用场景说明

设矩阵Shape为M N K, L1上的分块大小为m1 n1 k1,AI Core数量为C,那么可以划分出来的基本块数量为B = CeilDiv(M, m1) * CeilDiv(N, n1),计算轮次为B / C,如果B % C > 0,那么还需要计算一个尾轮, 当B / C > 1B % C <= C * 0.8时,采用该模板可能获取较优的性能。

测试性能建议注释掉精度比较代码。