Подтвердить что ты не робот

Является ли локальная память медленнее, чем общая память в CUDA?

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

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

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

4b9b3361

Ответ 1

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

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