1 / 13

Система автоматизации распараллеливания: DVM- эксперт

Система автоматизации распараллеливания: 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)

kalare
Download Presentation

Система автоматизации распараллеливания: DVM- эксперт

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. 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-эксперт Диалоговая оболочка Параллельная программа

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

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

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

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

  7. Описание работы 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

  8. Описание работы 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)

  9. Описание работы 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

  10. Описание работы 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

  11. Описание работы 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

  12. Описание работы DVM-эксперта Выходные данные Результат работы заносятся в базу данных • Внутреннее представление Class Pdir Int file; Int line; Int oper; Int pver; String T_dir • БД

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

More Related