开发平台(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的部分有理解错误吗?
谢谢