【发布时间】:2021-06-05 21:01:13
【问题描述】:
我刚刚开始学习 cuda 和并行编程,但学习起来很困难。如果我像这样声明线程块的大小和结构:
addKernel << < 1, 5 >> > (dev_c, dev_a, dev_b);
有人可以解释我将如何声明以下内容:
1)One 2D block
2)One 3D block
3)multiple 2D block in 1D block grid
4)multiple 2D block in 2D block grid
5)multiple 2D block in 3D block grid
6)multiple 3D block in 1D block grid
以及如何添加 2 个大小为 2^23-1 的较大数组大小。我不明白上述术语的含义以及如何在上面的 CUDA addKernel 行中表示它们。
const int arraySize = 2^23-1;
int a[arraySize] = { 0 };
int b[arraySize] = { 0 };
int c[arraySize] = { 0 };
上面我已经定义了数组大小并初始化了a、b和c。我正在尝试编写代码来并行添加 a 和 b 的内容并将结果存储在 c 中。我将如何以上述方式塑造线程结构并在线程之间拆分任务?谢谢你。我试图通过实现组织线程和块的不同方式来进一步理解线程层次结构。
【问题讨论】:
-
建议你缩小问题的范围,看起来你实际上是在要求一个关于 CUDA 的教程,并跟进一个特定的例子。