了解CUDA中的矩阵乘法

时间:2017-10-21 17:13:24

标签: c++ matrix cuda gpu

我正在努力学习CUDA。我在基于GPU的this文章的帮助下开始尝试矩阵乘法。 我的主要问题是我无法理解如何访问内核中的2D数组,因为访问2D数组与传统方法(matrix [i] [j])略有不同。 这是我陷入困境的部分:

for (int i = 0; i < N; i++) {
    tmpSum += A[ROW * N + i] * B[i * N + COL];
}
C[ROW * N + COL] = tmpSum;

我能理解ROW和COLUMN是如何衍生出来的。

int ROW = blockIdx.y*blockDim.y+threadIdx.y;
int COL = blockIdx.x*blockDim.x+threadIdx.x;

对示例的任何解释都非常感谢。谢谢!

1 个答案:

答案 0 :(得分:1)

矩阵连续存储,即连续存储在连续位置的每一行。你在这里看到的是平面贴图,即将两个元素索引转换为与第一个元素的偏移量。