置頂
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的部分有理解錯誤嗎?
會員登入
(先登入會員才能回覆留言喔!)
