CUDA uniu o acesso à memória global

Eu li o guia de programação CUDA, mas perdi uma coisa. Digamos que eu tenha matriz de 32 bits int na memória global e eu quero copiá-lo para a memória compartilhada com acesso coalescido. O array global tem índices de 0 a 1024, e digamos que eu tenha 4 blocos cada com 256 threads.

<code>__shared__ int sData[256];
</code>

Quando é feito o acesso coalescido?

1

<code>sData[threadIdx.x] = gData[threadIdx.x * blockIdx.x+gridDim.x*blockIdx.y];
</code>

Endereços na memória global são copiados de 0 a 255, cada um por 32 threads em dobra, então aqui está tudo bem?

2

<code>sData[threadIdx.x] = gData[threadIdx.x * blockIdx.x+gridDim.x*blockIdx.y + someIndex];
</code>

Se someIndex não é múltiplo de 32, não é coalescido? Endereços desalinhados? Isso está correto?

questionAnswers(4)

yourAnswerToTheQuestion