文章预览
这一篇主要谈论的是在SIMT架构下, 不使用TensorCore进行矩阵乘法计算所需要的访存相关的优化. 通过逐步迭代优化来更加深入理解GPU的性能相关的特征和访问内存优化. TensorCore相关的内容会在下一篇介绍. 测试环境为一块A10 GPU, Driver Version: 550.54.15, CUDA Version: 12.4 . 矩阵M=N=K=4092. Kernel GFLOPs/s 相对于cuBLAS的性能 0: cuBLAS 14765.9 100.0% 1: Naive 588.5 3.9% 2: GMEM Coalescing 1165.7 7.9% 3: SMEM Caching 2166.7 14.6% 4: 1D Blocktiling 6082.0 41.2% 5: 2D Blocktiling 11279.0 76.4% 6: Vectorized Mem Access 12861.4 87.1% 7: WarpTiling 14766.3 100.0% 主要参考了如下资料, 并进行了整理和测试, Credit属于如下这些文章的作者: Simon Boehm, How to Optimize a CUDA Matmul Kernel for cuBLAS-like Performance: a Worklog [1] 马骏 | 旷视 MegEngine 架构师, CUDA 矩阵乘法终极优化指南 [2] nicholaswilde, CUDA SGEMM矩阵乘法优化笔记——从入门到cublas [3] 李少侠, [
………………………………