通过矩阵乘法性能优化学习CUDA
概述
本文将以单精度矩阵乘法(Sgemm)为例,探讨cuda性能的优化加速,运用cuda优化基础知识一步步的把单精度矩阵乘法的性能优化到最高cublas的70%。
矩阵乘法的重要性:在高性能领域,对于矩阵乘(GEMM)的优化是一个非常重要的课题。GEMM可以非常广泛地应用于航空航天、流体力学等科学计算领域,这也是之前HPC的主要应用场景。后来深度学习开展地如火如荼,由于对高算力的需要,也成为HPC的主要应用场景之一。这些年涌现了一系列的深度学习模型。模型里面最耗时的东西,包括卷积、全连接层、attention,都可以转换成GEMM操作。所以说,GEMM优化的重要性,怎么突出都不过分。
目前网上能找到的针对GEMM优化的资料主要有这么几个方面:
一、论文,目前针对GPU进行GEMM优化的论文非常多,这里主要推荐Understanding the GPU Microarchitecture和Fast implementation of dgemm on fermi gpu以及 Dissecting the NVIDIA Volta GPU Architecture via Microbenchmarking。这几篇论文在业界都比较有影响力,就是代码开源方面做的不算太好。
二、官方博客,主要是CUTLASS和NervanaSystems-SGEMM优化。还有前段时间旷视发的文章CUDA矩阵乘法优化,写的都很详细。
三、github的一些demo,代码量不大,看起来比较舒服。我是看了这两个,
https://link.zhihu.com/?target=https%3A//github.com/Cjkkkk/CUDA_gemm
ht