Трансляция операций с массивами в код для современных графических процессоров Сахарных Н.А., Адинец А.В. Научный руководитель Березин С.Б. Лаборатория.

Презентация:



Advertisements
Похожие презентации
Высокоуровневый интерфейс потокового программирования для системы ATI DPVM Адинец А.В., Сахарных Н.А. Научный руководитель Березин С.Б. Лаборатория Microsoft.
Advertisements

Библиотека для работы с конечными множествами, использующая графический процессор в качестве основного вычислительного устройства Новосибирский Государственный.
Реализация индексного анализа для деревьев циклов любого вида сложности Выполнил : студент 818 гр. Юдин Павел Научный руководитель : к. т. н. Муханов Л.
Принципы адаптации вычислительных алгоритмов под параллельную архитектуру графических акселераторов С.М.Вишняков научный руководитель: д.т.н. А.В.Бухановский.
Принципы адаптации вычислительных алгоритмов под параллельную архитектуру графических акселераторов С.М.Вишняков научный руководитель: д.т.н. А.В.Бухановский.
Санкт-Петербургский государственный университет информационных технологий, механики и оптики Санкт-Петербург 2009 Санкт-Петербургский государственный университет.
Генерация кода Преобразование дерева операций в код на языке ассемблера Ассемблер процессоров типа Intel 80x86 Code – функция перевода узла в команды ассемблера.
Санкт-Петербургский государственный университет информационных технологий, механики и оптики Санкт-Петербург 2009 Санкт-Петербургский государственный университет.
Основные понятия программирования. АЛГОРИТМЫ + ДАННЫЕ = ПРОГРАММЫ Н. Вирт.
Министерство образования Республики Беларусь Белорусский государственный университет Управляющие структуры языков программирования.
Библиотека для работы с конечными множествами, использующая графический процессор в качестве основного вычислительного устройства Новосибирский Государственный.
ОРГАНИЗАЦИЯ ПАМЯТИ С ПАРАЛЛЕЛЬНЫМ ДОСТУПОМ К ИНФОРМАЦИИ И ЕЕ ПРИМЕНЕНИЕ Мурзин Федор Александрович.
Разработка интерфейса между системным коммутатором и контроллером памяти с использованием протокола AXI Выпускная квалификационная работа на соискание.
Программирование графических процессоров Безгодов Алексей Алексеевич НИИ НКТ, СПбГУ ИТМО.
Организация обмена информацией Функции устройств магистрали.
Оптимизация алгоритмов сигнальной обработки для процессоров с архитектуройЭльбрус Московский Физико-Технический Институт Автор : Павлов Антон Научный руководитель.
Библиотека для работы с конечными множествами, использующая графический процессор в качестве основного вычислительного устройства Новосибирский Государственный.
Графический 3D-конвейер Определение состояния объектов (Situation modeling) Определение соответствующих текущему состоянию геометрических моделей (Geometry.
Внутреннее представление компилятора Типы представлений и их особенности.
Сравнительный анализ различных реализаций фильтра Гаусса.
Транксрипт:

Трансляция операций с массивами в код для современных графических процессоров Сахарных Н.А., Адинец А.В. Научный руководитель Березин С.Б. Лаборатория Microsoft ВМК МГУ

Общие вычисления на графических процессорах (GPU) Применение – Линейная алгебра – Численные методы – Обработка изображений Интерфейсы доступа – Graphics API DirectX OpenGL – ATI DPVM DPVM Wrapper

Потоковое программирование Массив данных A Массив данных B Массив данных C Ядро – программа для обработки массивов данных Out = A + B * C Массив данных Out

DPVM Wrapper ATI DPVM – чтение/запись непосредственно в память GPU – дополнительные возможности по сравнению с графическими API – увеличение производительности DPVM Wrapper – высокоуровневый интерфейс потокового программирования для системы ATI DPVM работа с памятью типизированные буферы данных

Постановка задачи Трансляция операций над массивами данных в код для графического процессора – обработка выражений – представление данных – создание программы для выполнения на графическом процессоре (шейдер)

Представление выражений DAG (ациклический орграф) – во внутренних узлах – операции – в листьях – константы или массивы ( a – b) + b * c

Представление данных Данные в GPU представляются в виде двумерных массивов – отображение 1D, 2D, 3D, 4D массивов на двумерную область памяти GPU хорошо работает с float4 Упаковка данных

Трансляция простых операций Инициализация – определение данных и констант в шейдере Работа с регистрами – чтение из каждого массива данных в уникальный временный регистр – назначение регистров для внутренних узлов Определение порядка вычислений узлов DAGа – поиск в ширину Построение шейдера – генерация инструкций для каждого внутреннего узла DAGа – запись в выходной регистр результата

Пример ps_3_0 dcl vPos.xy dcl_2d s0 dcl_2d s1 dcl_2d s2 texld r0, vPos, s0 texld r1, vPos, s1 texld r2, vPos, s2 mul r2, r1, r2 sub r0, r0, r1 add oC0, r0, r2

Работа с под массивами float(int) a; float(int, int) b; float(int) c = a + b[2,] * b[,2]; Нетривиальное преобразование координат – обычное представление данных – упакованное представление данных строка столбец

Редукция Виды: sum(a), prod(a), min(a), max(a) Особенности – создание нового шейдера – несколько вариантов реализации с учетом распараллеливания

Различные оптимизации Упакованное представление данных в памяти GPU Обработка DAGа – Инструкция mad

Результаты Трансляция несложных выражений над массивами Независимость от API – работа с устройством в терминах потокового программирования Увеличение производительности в несколько раз по сравнению с вычислениями на CPU

Планы на будущее Расширение возможностей – поддержка дополнительных операций Разработка back-endа для языка программирования C$ Использование в других проектах для вычислений на GPU

Вопросы?