2012-06-07 61 views
0

我看有問題的代碼: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#blocks,#threads

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

它只是一個錯字。 – talonmies

回答

0

塊的數目將是由每個塊的大小劃分的實例的數目。但是,這可能會導致非整數答案。所以你必須確保你四捨五入,以便每個實例的執行都是以浪費一些資源爲代價的。

讓您真正想要做的是運用這個小整數運算技巧:

int nblocks = (n+blocksize-1)/blocksize;