Выч. группа 1

advertisement
САМАРСКИЙ ГОСУДАРСТВЕННЫЙ АЭРОКОСМИЧЕСКИЙ
УНИВЕРСИТЕТ ИМЕНИ АКАДЕМИКА С.П. КОРОЛЕВА
(национальный исследовательский университет)
Рекуррентная обработка изображений в
массивно-многопоточной среде CUDA
Применение CUDA для цветовой коррекции и восстановления
изображений
Якимов Павел Юрьевич, кафедра общей информатики СГАУ
16 марта 2011, Казань
План доклада
• Современные параллельные вычислительные системы с
общей памятью
• Использование графических процессоров для вычислений
• Сравнение кластерных и GPU систем
• Концепция массивно-многопоточных систем
• Использование CUDA для задач обработки и анализа
изображений
• Алгоритмы цветовой коррекции и восстановления
изображений
2
Параллельные вычислительные
системы
Профессиональные системы
• Многопроцессорные системы с общей памятью (Cray)
• Кластерные системы с распределенной памятью на основе
SMP узлов
Персональные системы
• ПК на основе многоядерных CPU
• Системы на основе GPU и гибридные CPU/GPU системы
• Облачные вычислительные системы и GRID
3
Классические парадигмы
параллельного программирования
Разделяемые между процессами данные
• Пакет
OpenMP
для
многоядерных
систем
и
суперкомпьютеров
• Unified Parallel C (George Washington University) –
расширение языка С для SMP и NUMA архитектур
• Intel Thread Building Block – для многоядерных систем Intel
Передача сообщений между процессами
• Библиотека MPI (Message Passing Interface)
• Библиотека PVM (Parallel Virtual Mashines)
4
Общая память в кластерных
системах
Распределенная общая память –
Distributed Shared Memory
• sDSM – распределенная общая память
построенная по аналогии с виртуальной
памятью
• RDMA – удаленный прямой доступ к
памяти, поддерживается аппаратно в
технологии Infiniband
Платформы с поддержкой DSM – UPC, Cluster Open MP
(Intel)
5
Архитектура кластерной системы с
многоядерными узлами
Узел 1
• Два уровня параллелизма –
параллельные ядра на каждом
узле, параллельные узлы
…
Узел N
…
…
Потоки узла
1
Потоки узла
N
Выч. группа 1
Выч. группа N
• Два уровня памяти –
«быстрая» память узла
на
котором выполняется поток;
…
более медленная DSM память
Выч. элементы
на удаленных узлах.
группы 1
…
…
Выч. элементы
группы N
6
GPGPU
General Purpose computation on
Graphic Processing Units –
Вычисления общего назначения
выполняемые на
графических процессорах
7
Основные характеристики GPU как
высокопроизводительной системы






На GPU выполняются параллельно
десятки тысяч потоков и тысячи
из них - одновременно
CPU и GPU образуют гибридную
систему с обменом данными по шине
PCI Express
Потоки на GPU группируются в блоки,
каждый из которых имеет свою
«быструю» разделяемую память
Блоки объединяются в сетку (grid)
Обмен данными между блоками
возможен посредством «медленной»
глобальной памяти
Все потоки разделяют один код –
функцию kernel
8
OpenCL – обобщение CUDA
OpenCL- Общая парадигма для многопоточных CPU и GPU систем.
Основные понятия OpenCL и их CUDA аналоги:
Понятие
OpenCL
параллельной
программы CUDA эквиалент
Ядро (kernel)
Ядро (kernel)
Хост программа
Хост программа
Индексное пространство (NDRange)
Сетка (grid)
Вычислительный элемент (work item)
Нить (thread)
Вычислительная группа (work group)
Блок (block)
Появление: декабрь 2008 в MacOS 10.6. (Apple и Khronos Group)
Текущая аппаратная поддержка: GPU: Nvidia, ATI, S3; встраиваемые CPU
VIA, ZiiLabs; Intel Graphics HD, Apple.
9
Массивно-многопоточные системы
Кластерные
системы
с
распределенной
общей
памятью и GPU системы являются массивномногопоточными системами (аналогия с OpenCL)
Основные элементы:
- Вычислительный
элемент (поток)
- Вычислительная группа
(узел или блок)
- Индексное
пространство (кластер,
сетка)
Выч. группа 1
…
Выч. элементы
группы 1
Выч. группа N
…
…
Выч. элементы
группы N
10
Параллельные вычисления в
массивно-многопоточных системах
Наиболее пригодные для решения задачи с внутренним
параллелизмом данных, в частности
•
•
•
•
•
поэлементная обработка данных (изображений)
алгоритмы линейной алгебры
сеточные методы и метод конечных элементов
рандомизированные и эволюционные алгоритмы
mapreduce алгоритмы
«Неудобные» задачи:
• рекурсивные алгоритмы
• задачи с глобальными зависимостями в данных
• параллелизм задач возможен на кластере, но не возможен на
11
GPU (пока)
Применение GPU в задачах
обработки и анализа изображений
Целесообразно применять GPU для решения следующих задач:
• обработка большеформатных изображений (ДСЗ, полиграфия)
• обработка нескольких потоков видео в реальном времени
• сжатие изображений и видео
Сложные алгоритмы анализа изображений:
• идентификация
моделей
регистрации
и
воспроизведения
изображений
• поиск ключевых точек с использованием NP полных алгоритмов
(таких как RANSAC)
• рекурсивная обработка в реальном времени
• системы автоматической навигации с распознаванием
12
Ретушь большеформатных
изображений
Задача
–
коррекция
точечных
артефактов
(блики,
пыль)
на
большеформатных
изображениях
в
полиграфии.
Алгоритм поиска артефактов основан на
вычислении характеристик изображения
в локальном окне.
Рекуррентная схема:
Обработка по столбцам:
s1x , y  s1x , y 1  Lx , y m  Lx , y ,
m
sx ,1   Lx , y  j
j 1
Обработка по строкам:
sx , y  sx 1, y  s1x m, y  s1x , y ,
m
s1, y   s1x  j , y
j 1
13
1П
1П
ГП
Согласованное
чтение из ГП в
ОП по
столбцам
32 П
32 П
1П
ГП
32 П
1П
ЛП
ГП
Обработка по
строкам ОП с
сохранением в ЛП
для след. итераций
ГП
Согласованное
чтение из ГП в
ОП по
ОП
столбцам
ЛП
Запись
обработанных
элементов из ЛП
в ОП
32 П
32 П
Обработка по
строкам ОП с
сохранением в ЛП
для след.1 итераций
П
32 П
1П
ГП
ЛП
Согласованное
чтение из ГП в
ОП по
столбцам
Обработка по
строкам ОП с
сохранением в ЛП
для след. итераций
32 стр
ГП
Согласованная
запись из ОП в
ГП по
столбцам
1П
ОП
ГП
Запись
обработанных
элементов из ЛП
в ОП
1П
32 П
Обработка по
строкам ОП с
сохранением в ЛП
для след. итераций
32 П
11
ПП
ЛП
ОП
ГП
Потоки группируются в блоки по 32
потока, общее число блоков равно
N/32.
Согласованная
Каждый
поток
последовательно
запись из ОП в
ГП по
читает данные из соседних столбцов
столбцам
изображения.
За одну итерацию все блоки
обрабатывают
32
строки
изображения, формируя в общей
памяти фрагмент изображения
размерностью 32*N.
32 П
32 П
ОП
Запись
обработанных
элементов из ЛП
в ОП
1П
32 П
ЛП
1П
32 П
ГП
Согласованная
запись из ОП в
ГП по
столбцам
Согласованное
чтение из ГП в
ОП по
столбцам
Запись
обработанных
элементов из ЛП
в ОП
1П
ОП
ГП
Согласованная Запись
по
Согласованный
доступ к Обработка
глобальной
запись из ОП в обработанных
строкам ОП с
памяти
– нити одного
блока
ГП по
элементов из ЛП сохранением в ЛП
обращаются к соседним ячейкам
столбцам
в ОП
для след. итераций
глобальной памяти
32 стр
Согласованная
запись из ОП в
ГП по
столбцам
32 П
Схема GPU рекуррентной
обработки строк
32 стр
Согласованн
чтение из ГП
ОП по
столбцам
14
Пример разбиения на блоки
block 1
block 2
thread 1
thread 2
block 3
thread 32
block N
15
Результаты оптимизации обработки
изображения скользящим окном
Время работы различных алгоритмов
для разных размеров окна (m).
Тип алгоритма
m=5
m=9
m = 15
1. CPU, не рекуррентный
283 мс
922 мс 2 531 мс
2. CPU, рекуррентный
142 мс
297 мс
733 мс
3. GPU, не рекуррентный
78 мс
262 мс
473 мс
4. GPU, рекуррентный (NVIDIA SDK)
23 мс
25 мс
27 мс
5. GPU, рекуррентный
обращений к памяти
12 мс
12 мс
12 мс
с
оптимизацией
16
Интерфейс программного
комплекса
17
БИХ фильтрация изображений
Общий вид БИХ фильтра:
у  n1 , n2    a  n1  r1 , n2  r2 x  r1 , r2  
r1
r2
  b n  k , n
1
k1
 k1k2

1
2
 k2 y  k1 , k2 
k2
n1n2 
БИХ фильтр применим для восстановления и цветовой коррекции
изображений.
Часть фильтра, зависящая только от входа реализуется по схеме
обработки скользящим окном.
18
GPU реализация рекуррентной
части БИХ фильтра
Рекурсивная часть БИХ фильтра:
у  n1 , n2  
  b n  k , n
1
k1
 k1k2
Блок
выполняет
вычисления
сдвигаясь
вдоль
столбца
изображения, за одну итерацию
обрабатывается одна строка
Движение блоков
по строкам
1
…

1
2
 k2 y  k1 , k2 
k2
n1n2 
Потоки каждого блока вычисляют
выходное
значение
фильтра
выполняя каскадное суммирование
Потоки блока
выполняют каскадное
суммирование
2
3
…
19
Ускорение рекурсивной обработки
на GPU
Теоретическая оценка:
O ]N / G[(4 N  2)]log 2 m[
Скорость обработки видеопотока:
Количество
и размер
Intel Core 2
кадров
duo E7500
видеопотока
1 x 2Mpix
25 x 2Mpix
Время вычислений (мс) для:
Intel Core 2
quad Q8600
Nvidia
GeForce GT
9500
Nvidia GTX
460
570
502
111
34
13752
12364
2806
861
20
Обмен между CPU и GPU в задачах
обработки видеоданных
Латентность шины PCI Express определяющий фактор при обмене
данными м/у CPU и GPU.
Оптимизация скорости передачи
Режим передачи данных между
оперативной памятью CPU и
глобальной памятью GPU.
Время передачи (мс) для
различных размеров (Мб)
передаваемого блока
1 Мб
50Мб
100
Мб
200 Мб
400
Mб
Синхронный режим, выгружаемая память
1544
649
547
588
560
Синхронный
память
выгружаемая
1040
304
293
280
283
выгружаемая
1052
316
360
292
330
Асинхронный режим, не выгружаемая
память
884
283
280
282
281
Асинхронный
память
режим,
не
режим,
21
Заключение
• Использование GPU позволяет получить существенное ускорение
для многих алгоритмов обработки изображений
• Наиболее эффективно применение GPU в задачах с параллелизмом
данных
• Для задач с рекурсивными зависимостями также может быть
получена эффективная GPU реализация
• GPU системы и кластерные системы с распределенной общей
памятью имеют общую массивно-многопоточную природу
22
Download