CUDA объединил доступ к глобальной памяти

Я прочитал руководство по программированию CUDA, но я упустил одну вещь. Допустим, у меня есть массив 32-битных int в глобальной памяти, и я хочу скопировать его в общую память с объединенным доступом. Глобальный массив имеет индексы от 0 до 1024, и, скажем, у меня есть 4 блока по 256 потоков в каждом.

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

Когда осуществляется объединенный доступ?

1.

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

Адреса в глобальной памяти копируются от 0 до 255, каждый из которых состоит из 32 потоков в деформации, так что все в порядке?

2.

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

Если someIndex не кратен 32, это не объединяется? Смещенные адреса? Это верно?

Ответы на вопрос(4)

Ваш ответ на вопрос