福生无量摸鱼天尊

【CUDA从入门到入土】四、矩阵乘法

2025/09/03
24
0

矩阵乘法跟之前不同,之前一维可以直接写一个kernel,或者多个kernel线性的排布来并行计算,那么矩阵乘法就是由一维向二维转变的关键。这时候一维的kernel排布也变成了二维排布。

这里最关键的点是在于threadIdxdataIdx的映射,从原来单一的tid变成了二维的tidxtidy

  // 一个block内thread的xy
  unsigned int tidx = threadIdx.x;
  unsigned int tidy = threadIdx.y;

  // 在grid内block的xy
  unsigned int bidx = blockIdx.x;
  unsigned int bidy = blockIdx.y;

  // 全局thread的xy
  unsigned int gidx = bidx * blockDim.x + tidx;
  unsigned int gidy = bidy * blockDim.y + tidy;

那么我们开始考虑深度学习最重要的一个乘法,矩阵乘法:

对于矩阵乘法,我们依旧遵循cuda一贯的思维,首先先用block将data进行分割,然后每个block内再配置thread将block内的数据继续继续分割执行,那么已知