Санкт-Петербургский государственный университет информационных технологий, механики и оптики Санкт-Петербург 2009 Санкт-Петербургский государственный университет информационных технологий, механики и оптики Принципы адаптации вычислительных алгоритмов под параллельную архитектуру графических акселераторов С.М.Вишняков научный руководитель: д.т.н., профессор А.В.Бухановский
Актуальность работы 2009Научно-исследовательский институт наукоемких компьютерных технологий 2 BrookGPU (2004) Sh Lib ( ) ATI CTMl/FireStream SDK (2007) nVidia CUDA (2007) OpenCL (2008) Преимущества CUDA: абстрагирование от терминологии компьютерной графики; SDK разрабатывается производителем «железа»; поддержка высокопроизводительных HPC-акселераторов (Tesla).
Цель и задачи работы 2009Научно-исследовательский институт наукоемких компьютерных технологий 3 Изучение особенностей отображения вычислительных алгоритмов на GPU-архитектуру, выявление ряда факторов, влияющих на получаемую производительность и исследование их влияния Изучение средств отображения алгоритмов на архитектуру графических акселераторов и выбор актуальных алгоритмов, на примерах которых изучаются особенности GPU-архитектуры Отображение выбранных алгоритмов на архитектуру графических акселераторов Анализ параллельной производительности, изучение влияния особенностей архитектуры на получаемую производительность
Архитектура GPU и отображение вычислительных задач Научно-исследовательский институт наукоемких компьютерных технологий 4 Перенос алгоритма на GPU: Выделение вычислительного ядра Загрузка данных в GPU Определение конфигурации ядра и запуск 2009 Отличия от традиционных архитектур: SIMT-подход Трудоемкие обращения к памяти Ограничения на использование ветвящихся конструкций Ограничения на коммуникацию между потоками
Пример 1: спектры климатического волнения 2009Научно-исследовательский институт наукоемких компьютерных технологий Аппроксимация нелинейной функции нескольких аргументов – оптимизация методом линейного случайного поиска Представление спектра Метод адаптивного случайного поиска с линейной тактикой 5 Научно-исследовательский институт наукоемких компьютерных технологий Исходный Аппроксимация
Пример 2: выделение особых точек на изображении – SIFT Научно-исследовательский институт наукоемких компьютерных технологий 6 Применение: Склейка аэрофотосъемки Поиск образов в БД Ключевые этапы алгоритма: Построение последовательности фильтров Гаусса для изображения Поиск и уточнение экстремумов в пирамиде Вычисление ориентации особых точек Вычисление дескрипторов особых точек 2009
Параллельная реализация аппроксимации спектров Научно-исследовательский институт наукоемких компьютерных технологий 7 Распараллеливание по данным Каждый поток GPU-устройства рассчитывает значение целевой функции для собственного спектра Распараллеливание вычисления целевой функции Вычисление целевой функции для одного спектра распараллеливается между всеми потоками Распараллеливание вычисления целевой функции в пределах блока потоков Каждый блок потоков рассчитывает значение целевой функции для собственного спектра 2009
Параллельная реализация алгоритма SIFT Научно-исследовательский институт наукоемких компьютерных технологий Особенности параллельной реализации Ручное кэширование данных в разделяемой памяти при построении фильтра Гаусса и поиске экстремумов Использование атомарных операций (CC 1.1) Выравнивание данных для более эффективного доступа к ним
Полученные результаты 9 Научно-исследовательский институт наукоемких компьютерных технологий A – распараллеливание по данным, B – распараллеливание подсчета целевой функции внутри блока, C – распараллеливание подсчета целевой функции на все потоки От каких параметров зависит эффективность параллельной реализации?
Зависимость производительности от конфигурации ядра 10 Научно-исследовательский институт наукоемких компьютерных технологий2009 Как выбрать оптимальную конфигурацию ядра?
Модель производительности Структура модели: 11 Научно-исследовательский институт наукоемких компьютерных технологий2009 Линейно изменяются все части, кроме T kernel
Модель производительности 12 Научно-исследовательский институт наукоемких компьютерных технологий2009 workPerThread – параметр вычислительного ядра mWarps – параметр архитектуры warpsPerMP, t0, occupancy – зависят от конфигурации ядра, через эту зависимость можно выбрать оптимальную конфигурацию
Полученные результаты 13 Научно-исследовательский институт наукоемких компьютерных технологий2009
14 Результаты Предложены и реализованы различные способы адаптации исследуемых алгоритмов к архитектуре графических акселераторов, получено существенное ускорение На примере исследуемых алгоритмов рассмотрено влияние различных особенностей архитектуры на получаемую производительность Предложена модель производительности, описывающая зависимость времени работы от конфигурации ядра для задач, использующих распараллеливание по данным Факультет информационных технологий и программирования2009
15 Выводы Полученные реализации исследуемых алгоритмов свидетельствуют о целесообразности применения графических акселераторов для решения подобных задач Обращая внимание на рассмотренные особенности архитектуры, можно увеличить получаемую производительность в несколько раз Предложенная модель производительности упрощает выбор оптимальной с точки зрения производительности конфигурации ядра Факультет информационных технологий и программирования2009
Запасной слайд 1 Научно-исследовательский институт наукоемких компьютерных технологий 17 Распараллеливание по данным Распараллеливание подсчета целевой функции 2009
Запасной слайд 2 Научно-исследовательский институт наукоемких компьютерных технологий Зависимость t0(blockSize) и ее теоретический вид (а), зависимость occupancy(blockSize) (б)
Запасной слайд 3 Научно-исследовательский институт наукоемких компьютерных технологий t 0 – «эффективное» время работы одного блока, которое вычисляется как время работы ядра при полной загрузке мультипроцессора перед насыщением (фактически – высота первой ступени графика), отнесенное к числу элементарных операций, выполняемых одним потоком; N – общее число элементарных операций, выполняемых ядром; workPerThread – число элементарных операций, приходящихся на один поток; warpsPerMP – количество основ, приходящихся на один мультипроцессор при данной конфигурации ядра.