wangzyon/NVIDIA_SGEMM_PRACTICE: Step-by-step optimization of CUDA SGEMM
Couldn't load subscription status. Retry There was an error while loading. Please reload this page. There was an error while loading. Please reload this page. Step-by-step optimization of CUDA SGEMM There was an error while loading. Please reload this page. 面向NVIDIA GPU,使用CUDA编程逐步优化矩阵乘法运算性能: NVIDIA GeForce RTX 3090,矩阵尺寸5120 在CMakeLists.txt中修改set(CUDA_NVCC_FLAGS -arch=compute_70;-code=compute_70) 在sgemm.cu:16中修改size_len,建议初次运行设置为16,过大尺寸可能导致电源超负荷主机重启; python plot.py 0 1表示绘制CUBLAS和kernel_1计算效率对比图; Naive基础版矩阵乘法实现 将每个逻辑线程与矩阵C的每一个元素相对应,每个线程负责C中一个元素的计算; 未经过优化的矩阵乘法性能不足CUBLAS的1/10,具体分析如下; 全局内存访问延迟高(几百cycle),同时相同位置元素被重复读取(C中同一行元素计算共享A中同一行元素,C中同一列元素计算共享B中同一列元素),另一方面,较低的计算访存比无法有效隐藏访存延迟,因此,访存延迟和计算访存比是导致kernel 1效率低下的原因。 利用共享内存缓存减少全局内存访存量和访存延迟 访存延迟来自于全局内存的高延迟和全局内存的重复访问。共享内存是片上内存,具有较低的访存延迟(几十cycle),使用共享内存进行缓存可降低访存延迟; BM和BN表示block tile的高和宽,BK表示待缓存的全局内存的步长,即一个block的计算需要缓存K/BK次; 共享内存缓存全局内存A tile和B tile,完成C block中所有元素的FMA计算,不断滑动缓存区域,更新block; kernel 1受限于全局内存的访存延迟和重复访问,优化前全局访存量为
Explore this link on the map →saved by
related reading
- CUTLASS: Fast Linear Algebra in CUDA C++ | NVIDIA Technical Blogdeveloper.nvidia.com
- Reverse-Engineering cuBLASaccu.org
- How to Optimize a CUDA Matmul Kernel for cuBLAS-like Performance: a Worklogsiboehm.com
- Outperforming cuBLAS on H100: a Worklogcudaforfun.substack.com
- GPU Performance Background User's Guide - NVIDIA Docsdocs.nvidia.com
- Inside NVIDIA GPUs: Anatomy of high performance matmul kernels - Aleksa Gordićaleksagordic.com
- Mini Project: GPU Accelerated Matrix Multiplication (almost) like cuBLAS0mean1sigma.com
- Learning CUDA by optimizing matrix-vector multiplication (SGEMV) for cuBLAS-like performance - A worklog – Maharshi's blogmaharshi.bearblog.dev
- Worklog: Optimising GEMM on NVIDIA H100 for cuBLAS-like Performance (WIP) – Hamza's Bloghamzaelshafie.bearblog.dev
- Matrix Multiplication CUDA - ECA - GPU 2018-2019ecatue.gitlab.io
- Outperforming cuBLAS on H100: a Worklogcudaforfun.substack.com
- Implementing a fast Tensor Core matmul on the Ada Architecture | spatters.caspatters.ca