Система автоматизации распараллеливания: DVM-эксперт Студент 528 группы Нгуен Минь Дык Научный руководитель: Профессор, д. ф.-м. н. Крюков Виктор Алексеевич.

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



Advertisements
Похожие презентации
Система автоматизации распараллеливания: DVM-эксперт Блюменберг Э.П. 528 Научный руководитель: профессор В.А. Крюков.
Advertisements

Система автоматизации распараллеливания: отображение на мультипроцессор Выполнил: студент 528 группы Лойко Михаил Юрьевич Научный руководитель: профессор,
1 Система автоматизации распараллеливания. Отображение на SMP-кластер. Автор: Картавец Евгений Олегович Научные руководители: д.ф.-м.н. Крюков Виктор Алексеевич.
Гибридная модель параллельного программирования DVM/OpenMP Бахтин В.А. ИПМ им.М.В.Келдыша РАН г. Москва, 20 марта 2008 г.
Большая вычислительная задача Математическая модель (система УРЧП) в подпространстве R 3 t Дискретизация УРЧП - система линейных и нелинейных уравнений.
Методика распараллеливания программ в модели DVM Институт прикладной математики им. М.В.Келдыша РАН
П РЕОБРАЗОВАНИЕ ПРОГРАММ НА ЯЗЫКЕ C-DVM В ПРОГРАММЫ ДЛЯ КЛАСТЕРОВ выполнила: студентка 527 группы Коваленко Алина Игоревна научный руководитель: профессор,
Модель параллелизма по данным и управлению. DVM Эта модель (1993 г.), положенная в основу языков параллельного программирования Фортран-DVM и Си- DVM,
Организация данных в виде массива. Массив - это упорядоченный набор фиксированного количества некоторых значений, называемых элементами массива. Каждый.
Реализация индексного анализа для деревьев циклов любого вида сложности Выполнил : студент 818 гр. Юдин Павел Научный руководитель : к. т. н. Муханов Л.
М.Ю. Харламов, ВНУ им. В.Даля, Семантический анализатор Семантический анализатор выполняет следующие основные действия: проверку соблюдения во входной.
Одномерные массивы. Массив – это конечный, последовательный набор элементов одного типа, связанных общим именем Простейшая форма – одномерный массив(линейная.
Подпрограммы: процедуры и функции Информатика. 1. Подпрограммы При решении различных задач часто возникает необходимость проводить вычисления по одним.
Оператор CASE. Pascal. Структура оператора CASE: Оператор CASE позволяет реализовать множественный выбор и в общем виде записывается так: case выражение.
Подпрограммы 1.Принцип модульности 2.Область действия переменных 3.Параметры подпрограмм 4.Модули.
Fortan OpenMP/DVM - язык параллельного программирования для кластеров В.А. Бахтин, Н.А. Коновалов, В.А. Крюков, Н.В. Поддерюгина Институт прикладной математики.
OpenMP. Различие между тредами и процессами ПроцессыТреды.
Министерство образования Республики Беларусь Белорусский государственный университет Управляющие структуры языков программирования.
Массивы 9 класс. Основные теоретические сведения Примеры решения задач.
Транксрипт:

Система автоматизации распараллеливания: DVM-эксперт Студент 528 группы Нгуен Минь Дык Научный руководитель: Профессор, д. ф.-м. н. Крюков Виктор Алексеевич

program compute_pi parameter (n = 1000) integer i double precision w,x,sum,pi,f,a f(a) = 4.d0/(1.d0+a*a) w = 1.0d0/n … end program compute_pi parameter (n = 1000) integer i double precision w,x,sum,pi,f,a f(a) = 4.d0/(1.d0+a*a) w = 1.0d0/n … end program compute_pi parameter (n = 1000) integer i double precision DVM PARALLEL DO… w,x,sum,pi,f,a f(a) = 4.d0/(1.d0+a*a) w = 1.0d0/n … end program compute_pi parameter (n = 1000) integer i double precision DVM PARALLEL DO… w,x,sum,pi,f,a f(a) = 4.d0/(1.d0+a*a) w = 1.0d0/n … end Последовательная программа Статический анализатор Динамический анализатор База данных OpenMP-эксперт Генератор программы Диалоговая оболочка DVM-эксперт Параллельная программа Система автоматизации распараллеливания

Цели дипломной работы Исследование возможных способов распределения данных и вычислений между узлами кластера в контексте DVM-системы Создание программы (один из компонентов системы автоматизации распараллеливания) на основе алгоритмов реализации старого эксперта. Данный компонент предназначен для распределения данных и вычислений, организации доступа к удаленным данным, формирования и вставки распараллеливающих DVM-указаний в тело программы

Входные данные Таблица переменных из базы данных idNameroutineT_typedimno1A1REAL2 2abs1REAL0 3b1REAL2 4eps1REAL0 Class Variable Int id; String name; String type; Int number_of_dim; Class Variable Int id; String name; String type; Int number_of_dim; Внутреннее представление DVM-Эксперт получает на вход информации последовательной программы и результат ее анализа из базы данных.

Ограничение на последовательной программы DVM-эксперт проектировался для работы с программами, которые удовлетворяют следующим ограничениям: Программа должна состоять из одной подпрограммы, написанной на языке FORTRAN. Циклы, присутствующие в программе не должны содержать: операций ввода/вывода вызовов процедур (кроме тех редукционных операций, которые поддерживаются DVM-системой) операторов выхода из цикла Индексное пространство циклов должно быть прямоугольным (нижняя, верхняя границы цикла, а так же шаг цикла – целые константы). Обращение к элементам массива может быть только внутри циклов, индексные выражения в этих случаях должно быть линейным и зависеть только от индексной переменной цикла : a*I + b: a, b – константы, I – индексная переменная.

Внутреннее представление Список циклов с описанием циклов. Описание цикла содержит: указатель на индексную переменную цикла; первое, последнее значения и шаг; наличие в цикле операторов ввода-вывода, побочных выходов и т.п. оценка трудоемкости одного витка цикла; признак тесной вложенности; список обращений к массивам и переменным. список зависимостей Список массивов (и простых переменных). Для каждого массива: идентификатор; размер по каждому измерению; тип данных; Вариант задачи: список пар (переменная, значение)

Описание работы DVM-эксперта 1) Выявляются циклы программы, которые могут выполняться параллельно т.е. те которые могут быть распределены средствами DVM-системы Данные (переменные, массивы), в которые производится запись, должны быть на узле кластера Данные, которые только читаются в цикле, могут быть на других узлах, к ним можно осуществить удалённый доступ. REAL A(L,L),B(L,L) DO 1 J = 1, L DO 1 I = 1, L B(I, J) = I + J 1 CONTINUE DO 2 IT = 1, ITMAX DO 21 J = 1, L DO 21 I = 1, L A(I, J) = B(I, J) 21 CONTINUE DO 22 J = 2, L-1 DO 22 I = 2, L-1 B(I, J) = (A( I-1, J ) + A( I, J-1 ) + A( I+1, J) + A( I, J+1 )) / 4 22 CONTINUE 2CONTINUE Цикл может быть параллельным, если выполнены следующие условия: + внутри цикла нет: - операций ввода/вывода - оператора выхода из цикла - вызовов процедур - зависимостей, с которыми не справился анализатор - неизвестных анализатору зависимостей + если нижний предел индексной переменной цикла в программе задаётся константой + если верхний предел индексной переменной цикла в программе задаётся константой + если шаг индексной переменной цикла в программе задаётся константой + ни один из вложенных (причем, не только непосредственно, но и транзитивно) циклов не содержит - операций ввода/вывода - оператора выхода из цикла - вызовов процедур - зависимостей, с которыми не справился анализатор - неизвестных анализатору зависимостей

Описание работы DVM-эксперта 2) Для каждого гнезда циклов формируются ограничение на распределение данных, схему выравнивания и возможный вариант распределения массивов Выравнивание массивов: A(I,J), B(I,J) 1DO 21 J = 2, L-1 2DO 21 I = 2, L-1 A(I, J) = B(I, J) 21CONTINUE Гнездо циклов – набор циклов, расположенных таким образом, что один цикл является телом другого цикла, гнездо циклов может состоять из одного цикла.

Описание работы DVM-эксперта 3) Для каждого варианта распределения данных генерируются DVM- директивы выравнивания массивов и организации доступа к удаленным данным для каждого гнезда циклов и вычисляется время параллельного выполнения с учётом расходов на коммуникации между узлами кластера для данного варианта DO 22 J = 2, L-1 DO 22 I = 2, L-1 A(I, J) = (A( I-1, J ) + A( I, J-1 ) + A( I+1, J) + A( I, J+1 )) / 4 22CONTINUE DISTRIBUTE b( BLOCK, BLOCK ) ALIGN a( i, j ) WITH b( i, j ) SHADOW a(1,1) SHADOW_RENEW (a(1,1)) PARALLEL ( j, i ) ON b( i, j ), SHADOW_RENEW (a(1,1)) Пример:

Описание работы DVM-эксперта 4) Находится наилучший вариант распределения данных для всех гнезд циклов на основе полученных времен параллельного выполнения DO 2 IT = 1, ITMAX DO 21 J = 1, L DO 21 I = 1, L A(I, J) = B(I, J) 21 CONTINUE DO 22 J = 2, L-1 DO 22 I = 2, L-1 B(I, J) = (A( I-1, J ) + A( I, J-1 ) + A( I+1, J) + A( I, J+1 )) / 4 22 CONTINUE 2CONTINUE DISTRIBUTE b( BLOCK, BLOCK ) ALIGN a( i, j ) WITH b( i, j )

Описание работы DVM-эксперта 5) После нахождения наилучшего варианта формируются окончательные DVM- директивы распараллеливания для всей программы DO J = 2,L - 1 DO I = 2,L - 1 B(I, J) = (A(I - 1,J) + A(I,J - 1) + A(I + 1,J) + A(I,J + 1)) / 4 ENDDO CDVM$ DISTRIBUTE b( BLOCK, BLOCK ) CDVM$ ALIGN a( i, j ) WITH b( i, j ) CDVM$ SHADOW a(1,1) REAL A(l,l),B(l,l) DO IT = 1,ITMAX CDVM$ PARALLEL ( j, i ) ON a( i, j ) DO J = 2,L - 1 DO I = 2,L - 1 A(I, J) = B(I, J) ENDDO CDVM$ PARALLEL ( j, i ) ON b( i, j ), CDVM$* SHADOW_RENEW (a(1,1)) LINE 3, OPERATOR 1 LINE 5, OPERATOR 3

Описание работы DVM-эксперта filelineoperpverT_dir1311 CDVM$ DISTRIBUTE b( BLOCK, BLOCK ) 1311 CDVM$ ALIGN a(I,J) WITH b(I, J) 1311 CDVM$ SHADOW a(1, 1) 1531 CDVM$* PARALLEL ( j, i ) ON a( i, j ) Class Pdir Int file; Int line; Int oper; Int pver; String T_dir Class Pdir Int file; Int line; Int oper; Int pver; String T_dir Выходные данные БД Внутреннее представление Результат работы заносятся в базу данных

Заключение В данный момент был реализован прототип эксперта на языке С++, объем кода которого составляет более 1000 строк. Эксперт может корректно построить внутреннее представление программы и выявить параллельные циклы на следующих тестах: Якоби, Последовательная верхняя релаксация (SOR), и их модифицированные версии. Модуль генерации вариантов и DVM-директив распараллеливания в текущий момент находится на стадии отладки. Описание работы эксперта на тестах и ожидаемые результаты работы представлены в приложение в дипломе.