Запись в глобальную память в CUDA - PullRequest
3 голосов
/ 02 февраля 2012

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

Однако как насчет записи памяти в CUDA? Он страдает от какого-либо типа записи в память? Является ли общая стоимость прямой суммой всех записей в ядре?

Будем благодарны за любые ссылки и комментарии.

1 Ответ

3 голосов
/ 03 февраля 2012

В общем, ответ на ваш вопрос "да", магазины похожи на нагрузки.Разница в том, что поскольку хранилища «запускаются и забываются», если есть работа, которая не зависит от сохраненных адресов, то она может быть немедленно запущена мультипроцессором (-ами) после выдачи хранилищ, и остановка будет происходить только тогда, когдавстречаются зависимости чтения после записи.

Для получения полной информации я предлагаю прочитать раздел 5.3.2 самого последнего Руководства по программированию CUDA .

Также см. Приложение F к этому документу для конкретной информации, относящейся к разным семействам архитектур.Например, вычислительные возможности 1.x имеют больше «обрывов» производительности, чем вычислительные возможности устройств 2.x (Fermi).

...