了解 CUDA 中的矩阵乘法

understanding Matrix multiplication in CUDA

本文关键字:CUDA 了解      更新时间:2023-10-16

我正在尝试学习 CUDA。在这篇基于 GPU 的文章的帮助下,我开始尝试矩阵乘法。我的主要问题是我不太了解如何在内核中访问 2D 数组,因为访问 2D 数组与传统方法(矩阵[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;

任何带有示例的解释都非常受欢迎。谢谢!

矩阵

是连续存储的,即每一行接一行地存储在连续的位置。你在这里看到的称为平面处理,即将两个元素索引转换为第一个元素的偏移量。