2012-02-02 4 views
2

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

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

Любые связанные ссылки и комментарии будут оценены.

+4

Это именно тот вопрос, который было бы интересно изучить с помощью экспериментальной программы. Вы можете написать базовую программу OpenCL или CUDA, которая выполняет много миллионов чтений и записей в разных шаблонах. Проведите тесты снова и снова в цикле и посмотрите, что вы получаете в среднем. Вероятно, это хороший способ изучить загрузочные части каждого API. – James

+0

Спасибо Джеймсу за комментарий! – Zk1001

ответ

2

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

Для получения более подробной информации я предлагаю прочитать раздел 5.3.2 последних CUDA programming guide.

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

+0

Спасибо за ответ. Я понял, что большая часть этой теории может быть подтверждена микробизнесом. Тем не менее, некоторые вещи путаются, когда Ферми приходит на сцену. Я заметил, что перед Ферми были счетчики производительности для коллаборации памяти, но теперь они ушли! Есть ли причина в этом? Я не думаю, что коллаборация памяти больше не влияет на Ферми (как для чтения, так и для записи), но ее концепция осложняется вкладом кэшей. Итак, я думаю, именно поэтому NVIDIA удалила эти счетчики. Кто-нибудь знает об этом? – Zk1001

+0

Да, это правильно. Счетчики были заменены счетчиками хитов/пропусков кеша. Последняя версия визуального профилировщика (4.1) упрощает интерпретацию этих данных путем создания полезных счетчиков вне счетчиков, а не для отображения необработанных данных счетчика. На ферми все зависит от количества извлеченных строк кэша, а не от количества объединенных сегментов памяти. – harrism

 Смежные вопросы

  • Нет связанных вопросов^_^