CUDA线程和块解释

时间:2015-01-18 00:37:26

标签: cuda

我一直关注这里的教程 http://www.nvidia.com/docs/IO/116711/sc11-cuda-c-basics.pdf

尝试自学基本的GPU编程。我仍然不太了解块和线程的拓扑结构。在页42上,代码定义大小数据如下:

#define N (2048*2048)
#define THREADS_PER_BLOCK 512

本教程是否做出假设?我目前正在使用Nvidia 520m GPU的笔记本电脑上。使用结构cudaDeviceProp我能够确定我能够运行每块1024个线程。 2048x2048究竟是什么量化的?块数?我怎么知道这是否正确?

1 个答案:

答案 0 :(得分:1)

N(2048 * 2048)数量是数据集的总大小。此问题是向量添加问题,因此要添加的向量的总大小为N个元素。

每个块的线程已在512定义。

可以从内核启动确定块数:

add<<<N/THREADS_PER_BLOCK,THREADS_PER_BLOCK>>>(d_a, d_b, d_c);
       ^                          ^  
    number of blocks            number of threads in each block

因此,正在启动的网格中的块总数为2048 * 2048/512 = 8192

这些特定参数(每个块512个线程,总共8192个块)应与任何当前可用的CUDA GPU兼容。