我正在查看相关代码:How do I choose grid and block dimensions for CUDA kernels? 以下是来自CUDA how to get grid, block, thread size and parallalize non square matrix calculation
的后续问题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);
blocksize和nthreads有什么区别?我认为他们是同一个人。这只是一个错字还是我错过了什么?
答案 0 :(得分:0)
块的数量将是实例数除以每个块的大小。但是,这可能会导致非整数答案。因此,您必须确保向上舍入,以便以浪费一些资源为代价执行每个实例。
所以你真正想做的是应用这个小整数算术技巧:
int nblocks = (n+blocksize-1)/blocksize;