相关疑难解决方法(0)

CUDA合并了对全局内存的访问

我读过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的倍数,它不会合并?地址错位?那是对的吗?

memory cuda copy coalescing

8
推荐指数
2
解决办法
6416
查看次数

标签 统计

coalescing ×1

copy ×1

cuda ×1

memory ×1