我是 CUDA 初学者。我这里有一个由 2 个线程执行的内核。所有线程都应将其结果保存到共享变量中。三个都完成后,结果sum
应该是 12,但我得到 6!
__global__ void kernel (..)
{
int i=blockDim.x*blockIdx.x+threadIdx.x;
__shared__ double sum;
...
if(i==0)
sum=0.0;
__syncthreads();
if(i<=1)
sum+= 2.0*3.0;
__syncthreads();
//sum should be 12 here, but I get 6. Why?
}
由
test<<<1,2>>>(..);