САМАРСКИЙ ГОСУДАРСТВЕННЫЙ АЭРОКОСМИЧЕСКИЙ УНИВЕРСИТЕТ ИМЕНИ АКАДЕМИКА С.П. КОРОЛЕВА (национальный исследовательский университет) Рекуррентная обработка изображений в массивно-многопоточной среде 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