Cuda программирование уменьшается с полной разверткой без _syncthreads () - PullRequest
0 голосов
/ 22 февраля 2019

Недавно я прочитал книгу Профессиональное программирование на CUDA C и обнаружил следующую часть кодирования, которую я не до конца понимаю.

enter image description here

Я запутался в последней части кодирования, которая касается развертывающейся деформации.Я знаю, что эта часть кода пытается уменьшить потребление цикла и время вызова _syncthreads().Тем не менее, я не понимаю, как это может убедиться в порядке операции добавления.Например, я думаю, что все темы должны делать vsmem[tid] = vsmem[tid + 16] после vsmem[tid] = vsmem[tid + 32].Я не знаю, как в этом убедиться.Кажется, что нет синхронизирующих потоков.

1 Ответ

0 голосов
/ 22 февраля 2019

Причина, по которой нет необходимости в _syncthreads(), заключается в том, что процессоры будут иметь 32 одновременных основных потока .Они гарантированно выполняются одновременно в графическом процессоре, они происходят в одно и то же время, поэтому нет необходимости «ждать» или синхронизироваться.

Эта презентация (стр. 21) содержит более подробное объяснение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...