4
我需要使用CUDA對矩陣的每個元素進行平方根(這基本上是一次在內存中的浮點值向量)。CUDA:更多維度的塊或只有一個?
矩陣尺寸未知「先驗」,可能會有所不同[2-20.000]。
我在想:我可能會使用(如喬納森建議在這裏)一個塊尺寸是這樣的:
int thread_id = blockDim.x * block_id + threadIdx.x;
併爲您的thread_id比低行*列......這是相當簡單和直接。
但是,是否有任何特定的性能原因,爲什麼我應該使用兩個(甚至三個)塊柵格維度來執行這樣的計算(記住我有一個矩陣後退)而不是一個?
我想在聚結的問題,比如讓所有的線程讀取值依次
謝謝,考慮到矩陣可能是非32倍大小(例如1033x2977),平鋪方法(2維)在我看來似乎只是複雜如上,但我可能是錯的 – 2011-03-28 19:55:08
謝謝ashwin,一個問題:如果我選擇半變形的線程數倍數,那麼頁面的第二種方法會最大化聚合,對嗎? – 2011-03-29 09:37:00
@Paul:選擇一個可以被warp-size(每個線程的線程)整除的塊大小(每個線程的線程)總是個好主意,因爲無論如何都不會有空的warp。 – LumpN 2011-03-30 16:20:49