- •Нижегородский государственный университет им. Н.И. Лобачевского
- •Содержание
- •Архитектура GPU NVIDIA
- •Архитектура CPU и GPU
- •Архитектура CPU и GPU
- •Архитектура GPU: общие сведения
- •Архитектура Tesla 8/10
- •Мультипроцессор Tesla 8
- •Мультипроцессор Tesla 10
- •Иерархия памяти Tesla 10
- •Мультипроцессор Fermi
- •Архитектура Fermi
- •Вычислительные возможности
- •Вычислительные возможности
- •Исполнение потоков
- •Основные понятия
- •Взаимодействие потоков
- •Выполнение блоков
- •«Автоматическая масштабируемость»
- •SIMT
- •Пример выполнения варпов
- •Выполнение ветвлений
- •Оптимизация загрузки устройства
- •Иерархия памяти CUDA
- •Типы памяти и скорость доступа
- •Использование локальной памяти
- •Использование константной памяти
- •Использование константной памяти
- •Использование текстурной памяти
- •Использование глобальной памяти
- •Использование глобальной памяти
- •Пример: выделение памяти и копирование вектора
- •Эффективная работа с глобальной памятью
- •Эффективная работа с глобальной памятью
- •Эффективная работа с глобальной памятью
- •Пример доступа к глобальной памяти
- •Пример доступа к глобальной памяти
- •Пример доступа к глобальной памяти
- •Рекомендации по эффективной работе с глобальной памятью
- •Пример
- •Работа с разделяемой памятью
- •Работа с разделяемой памятью
- •Пример
- •Динамически выделяемая разделяемая память
- •Пример
- •Эффективная работа с разделяемой памятью
- •Эффективная работа с разделяемой памятью
- •Доступ к разделяемой памяти без конфликтов банков
- •Доступ к разделяемой памяти с конфликтами банков
- •Пример: параллельная редукция
- •Постановка задачи
- •Иерархическое суммирование
- •Вариант 1
- •Вариант 1
- •Вариант 2
- •Вариант 2
- •Вариант 3
- •Вариант 3
- •Вариант 4
- •Вариант 4
- •Вариант 5
- •Результаты
- •Материалы
Нижегородский государственный университет им. Н.И. Лобачевского
Факультет Вычислительной математики и кибернетики
Исполнение потоков. Иерархия памяти
Бастраков С.И. ВМК ННГУ sergey.bastrakov@gmail.com
Содержание
Архитектура GPU NVIDIA
Исполнение потоков
Иерархия памяти
Пример: параллельная редукция
Н. Новгород, 2012 г. |
Исполнение потоков. Иерархия памяти |
2 |
Архитектура GPU NVIDIA
Н. Новгород, 2012 г. |
Исполнение потоков. Иерархия памяти |
3 |
Архитектура CPU и GPU
CPU |
GPU |
“cache-oriented” |
“cache-miss oriented” |
[NVIDIA CUDA C Programming Guide v. 3.2]
Н. Новгород, 2012 г. |
Исполнение потоков. Иерархия памяти |
4 |
Архитектура CPU и GPU
GPU предназначен для вычислений,
–параллельных по данным: одна и та же операция выполняется над многими данными параллельно,
–в которых отношение вычислительных операций к числу операций по доступу к памяти велико.
Вместо кэша и сложных элементов управления на кристалле размещено большее число вычислительных элементов.
Латентность памяти покрывается за счет большого количества легковесных потоков.
Постепенно сложность архитектуры GPU повышается.
Н. Новгород, 2012 г. |
Исполнение потоков. Иерархия памяти |
5 |
Архитектура GPU: общие сведения
GPU – массивно-параллельный многоядерный процессор.
Состоит из мультипроцессоров (streaming multiprocessor,
MP), каждый из которых содержит несколько CUDA-ядер (CUDA core) и общую для них память.
–В архитектурах до Fermi аналоги CUDA-ядер назывались скалярными процессорами (scalar processor, SP).
CUDA-ядра внутри одного мультипроцессора работают как SIMD.
Чрезвычайно легковесные потоки, встроенный планировщик.
Н. Новгород, 2012 г. |
Исполнение потоков. Иерархия памяти |
6 |
Архитектура Tesla 8/10
[А.В. Боресков, А.А. Харламов «Архитектура и программирование массивно- параллельных вычислительных систем»
Н. Новгород, 2012 г. |
Исполнение потоков. Иерархия памяти |
7 |
Мультипроцессор Tesla 8
[А.В. Боресков, А.А. Харламов «Архитектура и программирование массивно- параллельных вычислительных систем»
Н. Новгород, 2012 г. |
Исполнение потоков. Иерархия памяти |
8 |
Мультипроцессор Tesla 10
[А.В. Боресков, А.А. Харламов «Архитектура и программирование массивно- параллельных вычислительных систем»
Н. Новгород, 2012 г. |
Исполнение потоков. Иерархия памяти |
9 |
Иерархия памяти Tesla 10
Глобальная (device/global) – общая для устройства.
Разделяемая (shared) – общая для всех CUDA-ядер в одном MP.
Константный кэш (constant cache) – только чтение, общий для всех CUDA-ядер в одном MP.
Текстурный кэш (texture cache) – только чтение, общий для всех CUDA-ядер в одном MP.
Регистры (register) – (логически) эксклюзивны для CUDA-ядер.
Локальная (local) – (логически) эксклюзивна для CUDA- ядер.
Н. Новгород, 2012 г. |
Исполнение потоков. Иерархия памяти |
10 |