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

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



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

Программирование графических процессоров Безгодов Алексей Алексеевич НИИ НКТ, СПбГУ ИТМО.
Библиотека для работы с конечными множествами, использующая графический процессор в качестве основного вычислительного устройства Новосибирский Государственный.
Библиотека для работы с конечными множествами, использующая графический процессор в качестве основного вычислительного устройства Новосибирский Государственный.
Библиотека для работы с конечными множествами, использующая графический процессор в качестве основного вычислительного устройства Новосибирский Государственный.
GPU vs. CPU 681 млн. транзисторов Тактовая частота 575Mhz * 768MB 1.8 Ghz памяти DDR4 ~650 млн. транзисторов Тактовая частота ~700Mhz 1GB 1.1 Ghz памяти.
ОБРАБОТКА ИЗОБРАЖЕНИЙ С ИСПОЛЬЗОВАНИЕМ АППАРАТНОГО УСКОРИТЕЛЯ ГРАФИКИ Разработчики: Дейнега В.М. Малых Д.А. Круглов В.Н.
OpenGL и Direct3D сравнение стандартов Выполнил: Пенкин А. Группа И-204.
Обработка изображений Image Processing (IP) Изображение Компьютерное зрение Computer Vision (CV) Изображение Модель (Описание) Компьютерная графика Computer.
Основные понятия программирования. АЛГОРИТМЫ + ДАННЫЕ = ПРОГРАММЫ Н. Вирт.
Графический 3D-конвейер Определение состояния объектов (Situation modeling) Определение соответствующих текущему состоянию геометрических моделей (Geometry.
Научно-практическая работа «Исследование возможностей среды Visual Basic при создании тестовой программной оболочки по материалам подготовки к ГИА-9 по.
Студент группы МТ Уросов Александр Павлович Научный руководитель Авербух Владимир Лазаревич Доцент КИПУ Кандидат технических наук.
Принципы адаптации вычислительных алгоритмов под параллельную архитектуру графических акселераторов С.М.Вишняков научный руководитель: д.т.н. А.В.Бухановский.
Языки и методы программирования Преподаватель – доцент каф. ИТиМПИ Кузнецова Е.М. Лекция 7.
Основная микросхема компьютера, в которой и производятся все вычисления. На процессоре установлен большой медный ребристый радиатор, охлаждаемый вентилятором.
АЛГОРИТМЫ НА МАТРИЦАХ. МАССИВЫ В ПРОГРАММЕ ОПИСАНИЕ ОБРАЩЕНИЕ К ЭЛЕМЕНТУ МАССИВА тип имя[размер_1]…[размер_N] СИ имя[индекс_1]…[индекс_N] СИ индекс_i.
Вычисление времени запрета обработки внешних прерываний ОС с использованием ячейки МПВ-М Магистерская диссертация Студент: Севастинович Павел, 515 гр.
Владимир Костюков, АлтГТУ АлтГТУ им И. И. Ползунова Распределенная система мониторинга и диспетчерезации процессов гетерогенной среды.
Основная часть программы на языке Pascal представляет собой последовательность операторов, каждый из которых производит некоторое действие над данными,
Транксрипт:

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

Постановка задачи Удобный интерфейс для использования графических процессоров в параллельных вычислениях Что есть на данный момент? – Graphics API DirectX OpenGL – Высокоуровневые языки шейдеров HLSL GLSL Cg

Общие вычисления на GPU Линейная алгебра Численные методы Обработка изображений Физическая симуляция

ATI DPVM

Компоненты ATI DPVM ATI Close-to-the-Metal (CTM) – возможность чтения/записи в буфер в одном шейдере – чтение/запись непосредственно в память GPU – быстрые (tiled) форматы данных fetch4 (получение 4-x float за один тик) ATI AMU compiler – компиляция шейдера на ps_3_0 в бинарную программу для DPVM

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

DPVM Wrapper Высокоуровневый интерфейс для управления памятью ATI DPVM – выделение/освобождение блоков памяти Работа с буфером команд в терминах потокового программирования – ядра, которые состоят из шейдера и списка формальных параметров – работа в режиме накопления (retained) Интерфейс для работы с буферами данных и константными буферами Различные способы оптимизации – маскирование – отсечение по домену Получение статистики (performance counters)

Режимы работы Immediate – непосредственное создание буфера команд и выполнение при каждом вызове Retained – данные накапливаются в некотором списке – при попытке прочитать/записать в буфер, формируется буфер команд и подается на выполнение

Пример программы Размер массива (домен) ivec2 wsize = new ivec2(512, 512); Шейдер (ps_3_0) string shaderStr = "ps_3_0" + "dcl vPos.xy" + "dcl_2d s0" + "texld r0, vPos, s0" +// r0 = input "mul oC0, r0, c0";// output = r0 * c0 Описание параметров ядра string argStr = "vec4 c0 c0, " + "dataf in s0, " + "dataf out oC0";

Пример программы (2) // создаем устройство ManagedDevice dev = new ManagedDevice("sample"); // создаем 2 буфера DataBuffer inb = new DataBuffer (dev, wsize); DataBuffer outb = new DataBuffer (dev, wsize); vec4[,] input = new vec4[wsize.x, wsize.y]; //..заполняем массив input данными.. inb.writeValues(input); // устанавливаем константу vec4 cval = new vec4( 0.5f, 0.5f, 0.5f, 0.5f );

Пример программы (3) // создаем ядро SingleDppKernel p = new SingleDppKernel( dev, shaderStr, SourceType.ps_3_0, argStr, false ); // вызываем ядро с указанными параметрами p.invoke(cval, inb, outb); // читаем выходной массив данных vec4[,] output = outb.readValues();

Результаты Простой и удобный интерфейс для разработки небольших программ для графических процессоров – объем кода сравнительно меньше аналогичной программы для сырого DPVM – производительность: перемножение матриц 26 Gflops (пик 42) – ленивые вычисления на GPU

Что дальше? Язык программирования C$ – back-end Использование в других проектах в качестве оболочки над DPVM

Вопросы?