c++ - 了解 CUDA 中的矩阵乘法

标签 c++ matrix cuda gpu

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

非常感谢任何带有示例的解释。谢谢!

最佳答案

矩阵是连续存储的,即每一行都在连续的位置。您在这里看到的称为平面寻址,即将两个元素索引转换为距第一个元素的偏移量。

关于c++ - 了解 CUDA 中的矩阵乘法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46865875/

相关文章:

计算矩阵中的行总和

c++ - 在 QTCreator 中使用 MinGW 编译 c++ 和 cuda 代码

c++ - Oracle OCCI stmt.setTimestamp 插入 TIMESTAMP(6) : microseconds always 0

c++ - 根据字符串定义变量

matlab - 如何找到矩阵每一行中唯一元素的数量?

cuda - GPU (CUDA) 上是否有 MapReduce 实现?

单线程内CUDA内存操作顺序

c++ - 将 Lua 函数传递给 C++

c++ - 显示不在 3D 中的不移动文本(例如显示 HUD 或帧速率)

Java future 和快速点积