Сумма CUDA через блоки - PullRequest
       6

Сумма CUDA через блоки

0 голосов
/ 01 ноября 2018

Здравствуйте, я новичок в программировании cuda, и у меня возникла проблема.

У меня есть переменная, давайте назовем foo , хранящуюся в общей памяти каждого блока с разными значениями от одного блока к другому. И я хочу, чтобы только один поток суммировал их все по блокам. Я думал отправить foo в глобальную память, а затем вычислить сумму, но есть ли какая-нибудь функция, которая может сделать это быстрее?

Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 01 ноября 2018

Было бы быстрее, если бы один поток в каждом блоке выполнял операцию atomicAdd(), добавляя значение для каждого блока к одной глобальной переменной в глобальной памяти.

См. соответствующий раздел руководства по программированию CUDA C .

Для более глубокого изучения оптимизации сокращений (= суммирования), хотя и не обязательно того, который вы хотите выполнить, взгляните на презентацию Марка Харриса: Оптимизация параллельного сокращения в CUDA .

...