假設我有一個從MxN 2D矩陣轉換而來的一維數組,並且我想對每列進行並行化並執行一些操作。我如何爲每列分配一個線程?在CUDA中進行並行化,爲每列分配線程
例如,如果我有一個3×3矩陣:
1 2 3
4 5 6
7 8 9
我要添加在取決於列#列中的每個數(因此第一列將加1,第二加2 .. ..),它變成:
1+1 2+1 3+1
4+2 5+2 6+2
7+3 8+3 9+3
我該如何在CUDA中執行此操作?我知道如何將線程分配給數組中的所有元素,但我不知道如何將線程分配給每列。所以,我想要發送每一列(1,2,3)(4,5,6)(7,8,9)並進行操作。
哦,謝謝你的回覆,但是如果我想在每一行中將每個元素從右向左移動而不是添加?因此,在我的例子中,第一行(1 2 3)將變成(2 3 3)[保持最後一個元素相同],(4 5 6)變成(5 6 6)並且(7 8 9)變成(8 9 9)?它可能像你顯示的加法操作一樣嗎?謝謝! – overloading 2012-04-26 20:07:03
在這種情況下,就像 'matrix [gid] =(gid%N)?矩陣[gid + 1]:矩陣[gid];' 可能工作。 – limes 2012-04-26 20:19:25
模運算符是在GPU上的昂貴的操作,儘量避免它! – djmj 2012-04-27 00:23:21