CUDA fusionó el acceso a la memoria global

He leído la guía de programación CUDA, pero me perdí una cosa. Digamos que tengo una matriz de int de 32 bits en la memoria global y quiero copiarla en la memoria compartida con acceso combinado. La matriz global tiene índices de 0 a 1024, y digamos que tengo 4 bloques cada uno con 256 subprocesos.

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

¿Cuándo se realiza el acceso coalescido?

1.

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

Las direcciones en la memoria global se copian de 0 a 255, cada una por 32 hilos en warp, así que aquí está bien.

2.

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

Si someIndex no es múltiplo de 32, ¿no se fusiona? ¿Direcciones desalineadas? ¿Es eso correcto?

Respuestas a la pregunta(4)

Su respuesta a la pregunta