我一直关注这里的教程 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究竟是什么量化的?块数?我怎么知道这是否正确?
答案 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兼容。