Конечно, есть, поскольку локальная память является физической, а не виртуальной.
Мы привыкли, начиная с работы с виртуальным адресным пространством на процессорах, чтобы теоретически иметь столько памяти, сколько мы хотим - потенциально сбой при очень больших размерах из-за исчерпания файла подкачки / раздела подкачки, или, возможно, даже не этого, пока мы действительно не попробуем использовать слишком много памяти, чтобы ее нельзя было сопоставить с физической RAM и диском.
Это не относится к таким вещам, как ядро операционной системы компьютера (или его части более низкого уровня), которым требуется доступ к определенным областям в реальной оперативной памяти.
Это также не относится к глобальной и локальной памяти GPU. Отсутствует * подкачка памяти (переназначение воспринимаемых адресов потоков на адреса физической памяти); и никакой подкачки. В частности, что касается локальной памяти, каждый вычислительный блок (= каждый симметричный мультипроцессор на графическом процессоре) имеет группу ОЗУ, используемую в качестве локальной памяти; зеленые плиты здесь:
![введите описание изображения здесь](https://i.stack.imgur.com/cqeqw.jpg)
размер каждой такой плиты - это то, что вы получаете с
clGetDeviceInfo( · , CL_DEVICE_LOCAL_MEM_SIZE, · , ·)
.
Для иллюстрации, на графических процессорах nVIDIA Kepler размер локальной памяти составляет либо 16 КБайт. или 48 КБ (а дополнение до 64 КБ используется для кэширования доступа к глобальной памяти). Итак, на сегодняшний день локальная память графического процессора очень мала по сравнению с глобальной памятью устройства.
1 - На графических процессорах nVIDIA, начиная с архитектуры Pascal, поддерживается разбиение по страницам; но это не самый распространенный способ использования памяти устройства.
person
einpoklum
schedule
22.11.2013