了解 CUDA 中的矩阵乘法
understanding Matrix multiplication in CUDA
我正在尝试学习 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;
任何带有示例的解释都非常受欢迎。谢谢!
矩阵
是连续存储的,即每一行接一行地存储在连续的位置。你在这里看到的称为平面处理,即将两个元素索引转换为第一个元素的偏移量。
相关文章:
- 编译时未启用intel oneApi CUDA支持
- 正在尝试了解输入验证循环
- 在cuda线程之间共享大量常量数据
- 了解 GLM- openGL 中的相机转换
- C++我需要了解在哪里使用指针和双指针
- 为什么即使使用-cudart-static进行编译,库用户仍然需要链接到cuda运行时
- 如何深入了解明显的腐败
- Cuda C++:设备上的Malloc类,并用来自主机的数据填充它
- CUDA内核和数学函数的显式命名空间
- 了解嵌套循环打印星号图案
- CUDA:统一内存和指针地址的更改
- 调试 CUDA MMU 故障
- 了解每月第一天函数的代码
- 了解C++标准::shared_ptr
- 使用 CUDA 和纹理进行图像减法
- 尝试了解在导入的静态方法上使用删除方法时的错误
- C++:需要帮助了解运算符重载错误
- 了解 CUDA 中的矩阵乘法
- 了解纹理如何与 CUDA 配合使用
- CUDA - 了解线程的并行执行(扭曲)和合并的内存访问