草庐IT

threadIdx

全部标签

c++ - 使用CUDA对两个数组求和

我在学习thisguide的同时正在学习CUDA。我还没有完成,但是我决定尝试一下到目前为止所看到的。我试图重写第一个使用256个线程的示例。我想这样做,以便每个线程都在数组的连续切片上进行操作。目标是将2个数组与1,048,576个项相加。为了进行比较,这是原始代码,其中根据跨步访问每个数组项:__global__voidadd(intn,float*x,float*y){intindex=threadIdx.x;intstride=blockDim.x;for(inti=index;i这是我的功能:__global__voidadd2(intn,float*x,float*y){i

memory - CUDA 合并访问全局内存

我已阅读CUDA编程指南,但我错过了一件事。假设我在全局内存中有32位int数组,我想通过合并访问将它复制到共享内存。全局数组的索引从0到1024,假设我有4个block,每个block有256个线程。__shared__intsData[256];何时执行合并访问?1.sData[threadIdx.x]=gData[threadIdx.x*blockIdx.x+gridDim.x*blockIdx.y];全局内存中的地址从0复制到255,每个被32个线程在warp中复制,这样就可以了?2.sData[threadIdx.x]=gData[threadIdx.x*blockIdx.x

memory - CUDA 合并访问全局内存

我已阅读CUDA编程指南,但我错过了一件事。假设我在全局内存中有32位int数组,我想通过合并访问将它复制到共享内存。全局数组的索引从0到1024,假设我有4个block,每个block有256个线程。__shared__intsData[256];何时执行合并访问?1.sData[threadIdx.x]=gData[threadIdx.x*blockIdx.x+gridDim.x*blockIdx.y];全局内存中的地址从0复制到255,每个被32个线程在warp中复制,这样就可以了?2.sData[threadIdx.x]=gData[threadIdx.x*blockIdx.x