Является ли локальная память медленнее, чем разделяемая в CUDA? - PullRequest
14 голосов
/ 30 августа 2011

Я только нашел замечание, что локальная память медленнее, чем память регистров, типа два на поток.

Предполагается, что общая память работает быстро, но быстрее ли она, чем локальная память [потока]?

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

1 Ответ

24 голосов
/ 30 августа 2011

Локальная память - это просто поток локальной глобальной памяти. Это намного, намного медленнее (как с точки зрения пропускной способности, так и с точки зрения задержки), чем регистры или разделяемая память. Он также использует пропускную способность контроллера памяти, которая в противном случае была бы доступна для глобальных транзакций памяти. Влияние на производительность разлива или преднамеренного использования локальной памяти может быть любым, от незначительного до серьезного, в зависимости от используемого оборудования и использования локальной памяти.

Согласно исследованию Василия Волкова - см. Лучшая производительность при меньшей загрузке ( pdf ) - примерно в 8 раз больше эффективной полосы пропускания между разделяемой памятью и регистром в Fermi Графические процессоры (около 1000 Гбит / с для разделяемой памяти и 8000 Гбит / с для регистров). Это несколько противоречит документации CUDA, которая подразумевает, что общая память сопоставима по скорости с регистрами.

...