У меня есть массив 2D-хозяев с 10 строками и 96 столбцами. Я загружаю этот массив в свою глобальную память устройства cuda линейно, т. Е. Row1, row2, row3 ... row10.CUDA 5.0 Выравнивание памяти и объединенный доступ
Массив типа float. В моем ядре каждый поток обращается к одному значению float из глобальной памяти устройства.
The BLOCK_SIZE I use is = 96
The GRID_DIM I use is = 10
Теперь то, что я понял из «Cuda C руководства по программированию» для слившихся доступов, шаблон я использую правильно, доступ последовательно ячейки памяти с помощью перекоса. Но есть пункт о размещении памяти по 128 байт памяти. Который я не понимаю.
Q1) 128-битная настройка памяти; Означает ли это, что каждый поток в warp должен получить доступ к 4 байтам, начиная с адреса 0x00 (например) до 0x80?
Q2) Так что, в сценарии, я буду делать непривязанные обращения или нет?
Мое понимание: один поток должен сделать один доступ к памяти с должно быть 4 байта, от диапазона адреса, например от 0x00 до 0x80. Если поток из warp получает доступ к местоположению за его пределами, его неэкранированный доступ.
Благодаря @Jeffrey. Он разъясняет все мои сомнения. – fahad