我读过CUDA编程指南,但我错过了一件事.假设我在全局内存中有32位int数组,我想将它复制到具有合并访问权限的共享内存中.全局数组的索引从0到1024,假设我有4个块,每个块有256个线程.
__shared__ int sData[256];
Run Code Online (Sandbox Code Playgroud)
何时进行合并访问?
1.
sData[threadIdx.x] = gData[threadIdx.x * blockIdx.x+gridDim.x*blockIdx.y];
Run Code Online (Sandbox Code Playgroud)
全局内存中的地址从0到255复制,每个地址由32个线程进行warp,所以这里可以吗?
2.
sData[threadIdx.x] = gData[threadIdx.x * blockIdx.x+gridDim.x*blockIdx.y + someIndex];
Run Code Online (Sandbox Code Playgroud)
如果someIndex不是32的倍数,它不会合并?地址错位?那是对的吗?