0

我正在查看有问题的代码:如何为 CUDA 内核选择网格和块尺寸? 这是来自以下问题的后续问题:CUDA 如何获取网格、块、线程大小和并行化非方阵计算

const int n = 128 * 1024;
int blocksize = 512; // value usually chosen by tuning and hardware constraints
int nblocks = n / nthreads; // value determine by block size and total work
madd<<<nblocks,blocksize>>>mAdd(A,B,C,n);

块大小和nthreads有什么区别?我想他们是同一个。这只是一个错字还是我错过了什么?

4

1 回答 1

0

块的数量将是实例的数量除以每个块的大小。但是,这可能会导致非整数答案。因此,您必须确保进行四舍五入,以便以浪费一些资源为代价来执行每个实例。

所以你真正想做的是应用这个小整数算术技巧:

int nblocks = (n+blocksize-1)/blocksize;
于 2012-06-07T15:22:28.973 回答