開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
VS2013
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
CUDA
問題(Question):
先附上程式碼:
http://ideone.com/RwJCBZ
給一個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的部分有理解錯誤嗎?
謝謝