130 likes | 362 Vues
Система автоматизации распараллеливания: 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)
E N D
Система автоматизации распараллеливания: 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 Система автоматизации распараллеливания Динамический анализатор Статический анализатор Последовательная программа База данных Генератор программы DVM-эксперт 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-указаний в тело программы
Входные данные DVM-Эксперт получает на вход информации последовательной программы и результат ее анализа из базы данных. • Таблица переменных из базы данных Class Variable Int id; String name; String type; Int number_of_dim; • Внутреннее представление
Ограничение на последовательной программы DVM-эксперт проектировался для работы с программами, которые удовлетворяют следующим ограничениям: • Программа должна состоять из одной подпрограммы, написанной на языке FORTRAN. • Циклы, присутствующие в программе не должны содержать: • операций ввода/вывода • вызовов процедур (кроме тех редукционных операций, которые поддерживаются DVM-системой) • операторов выхода из цикла • Индексное пространство циклов должно быть прямоугольным (нижняя, верхняя границы цикла, а так же шаг цикла – целые константы). • Обращение к элементам массива может быть только внутри циклов, индексные выражения в этих случаях должно быть линейным и зависеть только от индексной переменной цикла : a*I + b: a, b – константы, I – индексная переменная.
Внутреннее представление Список циклов с описанием циклов. • Описание цикла содержит: указатель на индексную переменную цикла; первое, последнее значения и шаг; наличие в цикле операторов ввода-вывода, побочных выходов и т.п. оценка трудоемкости одного витка цикла; признак тесной вложенности; список обращений к массивам и переменным. список зависимостей • Список массивов (и простых переменных). Для каждого массива: идентификатор; размер по каждому измерению; тип данных; • Вариант задачи: список пар (переменная, значение)
Описание работы DVM-эксперта Цикл может быть параллельным, если выполнены следующие условия: + внутри цикла нет: - операций ввода/вывода - оператора выхода из цикла - вызовов процедур - зависимостей, с которыми не справился анализатор - неизвестных анализатору зависимостей + если нижний предел индексной переменной цикла в программе задаётся константой + если верхний предел индексной переменной цикла в программе задаётся константой + если шаг индексной переменной цикла в программе задаётся константой + ни один из вложенных (причем, не только непосредственно, но и транзитивно) циклов не содержит - операций ввода/вывода - оператора выхода из цикла - вызовов процедур - зависимостей, с которыми не справился анализатор - неизвестных анализатору зависимостей 1) Выявляются циклы программы, которые могут выполняться параллельно т.е. те которые могут быть распределены средствами DVM-системы Данные (переменные, массивы), в которые производится запись, должны быть на узле кластера Данные, которые только читаются в цикле, могут быть на других узлах, к ним можно осуществить удалённый доступ. • REALA(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 • 2 CONTINUE
Описание работы DVM-эксперта 2) Для каждого гнезда циклов формируются ограничение на распределение данных, схему выравнивания и возможный вариант распределения массивов Гнездо циклов – набор циклов, расположенных таким образом, что один цикл является телом другого цикла, гнездо циклов может состоять из одного цикла. 1 DO 21 J = 2, L-1 2 DO 21 I = 2, L-1 A(I, J) = B(I, J) 21CONTINUE Выравнивание массивов: A(I,J), B(I,J)
Описание работы DVM-эксперта 3) Для каждого варианта распределения данных генерируются DVM-директивы выравнивания массивов и организации доступа к удаленным данным для каждого гнезда циклов и вычисляется время параллельного выполнения с учётом расходов на коммуникации между узлами кластера для данного варианта Пример: DISTRIBUTE b( BLOCK , BLOCK ) ALIGN a( i , j ) WITH b( i , j ) SHADOW a(1,1) PARALLEL ( j , i ) ON b( i , j ), SHADOW_RENEW (a(1,1)) DO 22J = 2, L-1 DO 22I = 2, L-1 A(I, J) = (A( I-1, J ) + A( I, J-1 ) + A( I+1, J) + A( I, J+1 )) / 4 22 CONTINUE
Описание работы DVM-эксперта 4) Находится наилучший вариант распределения данных для всех гнезд циклов на основе полученных времен параллельного выполнения DISTRIBUTE b( BLOCK , BLOCK ) ALIGN a( i , j ) WITH b( i , j ) • 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 • 2 CONTINUE
Описание работы DVM-эксперта 5) После нахождения наилучшего варианта формируются окончательные DVM-директивы распараллеливания для всей программы CDVM$ DISTRIBUTE b( BLOCK , BLOCK ) CDVM$ ALIGN a( i , j ) WITH b( i , j ) CDVM$ SHADOW a(1,1) LINE 3, OPERATOR 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 ENDDO LINE 5, OPERATOR 3 CDVM$ PARALLEL ( j , i ) ON b( i , j ), CDVM$* SHADOW_RENEW (a(1,1)) 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 ENDDO
Описание работы DVM-эксперта Выходные данные Результат работы заносятся в базу данных • Внутреннее представление Class Pdir Int file; Int line; Int oper; Int pver; String T_dir • БД
Заключение • В данный момент был реализован прототип эксперта на языке С++, объем кода которого составляет более 1000 строк. • Эксперт может корректно построить внутреннее представление программы и выявить параллельные циклы на следующих тестах: Якоби, Последовательная верхняя релаксация (SOR), и их модифицированные версии. • Модуль генерации вариантов и DVM-директив распараллеливания в текущий момент находится на стадии отладки. Описание работы эксперта на тестах и ожидаемые результаты работы представлены в приложение в дипломе.