Описание тега gpu-local-memory
По умолчанию автоматические переменные в ядрах графического процессора (которые являются локальными для одного потока выполнения графического процессора) помещаются в большой файл регистров, доступный для ядер графического процессора. Однако такое размещение возможно не всегда; например:
- Для локальных массивов может потребоваться индексированный доступ, который не поддерживается большинством / всеми графическими процессорами; если индекс не может быть определен во время компиляции, такие массивы не могут быть помещены в регистры.
- Ядро может использовать больше места, чем доступно в регистровом файле ("переполнение регистров").
Когда размещение регистратора невозможно, память, специфичная для потока, размещается не в общей памяти ядра графического процессора, а в гораздо большей глобальной памяти устройства. За исключением того, что этот адрес недоступен программисту во время компиляции, "локальная" память ведет себя в основном так же, как "глобальная" память: низкая пропускная способность и высокая задержка по сравнению с общей памятью или регистрами. Компилятор ядра обычно помещает локальную память потоков деформации в глобальную память в автоматически чередующемся шаблоне для повышения скорости доступа.
Более подробную информацию о локальной памяти в CUDA можно найти в Руководстве по программированию CUDA от nVIDIA.
На языке OpenCL это пространство памяти называется "частной памятью", в то время как "локальная память" OpenCL фактически является локальной для рабочей группы, то есть эквивалентом общей памяти в CUDA.