Шаг 11.
Технология CUDA.
Иерархия памяти в CUDA

    На этом шаге мы рассмотрим иерархию памяти.

    Одним из серьезных отличий между GPU и CPU являются организация памяти и работа с ней. Обычно большую часть CPU занимают кэши различных уровней. Основная часть GPU отведена на вычисления. Как следствие, в отличие от CPU, где есть всего один тип памяти с несколькими уровнями кэширования в самом CPU, GPU обладает более сложной, но в то же время гораздо более документированной структурой памяти.

    Чисто физически память GPU можно разделить на DRAM и на память, размещенную непосредственно на GPU (точнее, в потоковых мультипроцессорах). Однако классификацией памяти в CUDA не ограничивается ее чисто физическим размещением. В таблице 1 приводятся доступные виды памяти в CUDA и их основные характеристики.

Таблица 1. Типы памяти в CUDA
Тип памяти Расположение Кэшируется Доступ Уровень доступа Время жизни
Регистры Мультипроцессор Нет R/w Per-thread Нить
Локальная DRAM Нет R/w Per-thread Нить
Разделяемая Мультипроцессор Нет R/w Все нити блока Блок
Глобальная DRAM Нет R/w Все нити и CPU Выделяется CPU
Константная DRAM Да R/o Все нити и CPU Выделяется CPU
Текстурная DRAM Да R/o Все нити и CPU Выделяется CPU

    Как видно из приведенной таблицы, часть памяти расположена непосредственно в каждом из потоковых мультипроцессоров (регистры и разделяемая память), часть памяти размещена в DRAM (Dynamic Random Access Memory).

    На следующем шаге мы рассмотрим иерархию памяти в CUDA.




Предыдущий шаг Содержание Следующий шаг