cuda实现gemm
一 基本分析
1. CUDA GEMM 常规实现方案与理论性能分析
1.1 基于 GEMM 定义的朴素实现
矩阵乘法定义如下:
输入:矩阵A(M行K列),矩阵B(K行N列)
输出:矩阵C(M行N列)for i from 0 to M-1:for j from 0 to N-1:C[i][j] = 0;for p from 0 to K-1:C[i][j] += A[i][p] * B[p][j]
对于 C 矩阵的每一个元素,都要读取 A 矩阵的一行和 B 矩阵的一列来计算,那么计算完整的 C 矩阵,A B 矩阵都要重复读取多次,所以直接按定义计算效率很低。
首先说明,很多文章在解释这种方案性能差的时候,都是以内存延迟太高作为主要理由,实际上在并行计算中