評價: 0 回應: 0 閱覽: 97
置頂

CUDA關於Threads新手問題

給一個input array
並且總共有GridDim*BlockDim個Threads(例子裡面是1*4)

假設
Input[16]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
           ^^^^^^^ ^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^
           Thread1 Thread2 Thread3   Thread4

希望用Threads分別把各自的Input範圍加總
Output[0]=1+2+3+4 = 6;
Output[1]=5+6+7+8 = 22;
Output[2]=9+10+11+12 = 38;
Output[3]=12+13+14+15 = 54;

但這個程式好像只有在GridDim=1的情況下才會正確
如果GridDim不為1,譬如(2*2)
雖然一樣是有4個Threads,
但是就只有第一個Block的Threads答案會正確,
錯誤Output如下:
Output[0]=6;
Output[1]=22;
Output[2]=14;
Output[3]=30;

想請問是否我__global__ kernel的部分有理解錯誤嗎?

會員登入 (先登入會員才能回覆留言喔!)

Facebook留言