МОСКОВСКИЙ ЭНЕРГЕТИЧЕСКИЙ ИНСТИТУТ
(ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ)
Граф – схемное потоковое
параллельное программирование и его
реализация на кластерных системах
д.т.н., проф. Кутепов В.П.
Котляров Д.В.
1.
2.
Кутепов В.П. Об интеллектуальных компьютерах и больших компьютерных системах
нового поколения. Теория и системы управления, 1996, №5.
Кутепов В. П. и др. Граф-схемное потоковое параллельное программирование и его
реализация на кластерных системах. Теория и системы управления, 2005, №1.
Граф – схемное потоковое параллельное
программирование и его реализация на кластерных системах
Назначение: визуальная разработка модульных
параллельных потоковых программ и их
выполнение на кластерных системах
Состав разработанных программных средств:
– язык граф – схемного потокового программирования (ЯГСПП),
– инструментальная среда программирования,
– средства управления параллельным выполнением программ на
кластерах
Граф – схемное потоковое параллельное
программирование и его реализация на кластерных системах
ЯГСПП
Язык позволяет эффективно и единообразно представлять
в программах три вида параллелизма
параллелизм информационно-независимых фрагментов;
потоковый параллелизм, обязанный своим
происхождением
конвейерному принципу обработки данных;
параллелизм множества данных – механизм
тегирования(одна и та же программа или ее фрагмент
применяются к различным данным);
Граф – схемное потоковое параллельное
программирование и его реализация на кластерных системах
ЯГСПП
Важными особенностями ЯГСПП являются:
схемное представление программ, программа есть пара
<граф – схема, интерпретация>,
возможность визуального графического и текстового
представления программ,
возможность простого структурирования программы и
отражения декомпозиционной иерархии при ее построении
путем использования отношения «схема-подсхема»;
использование традиционных последовательных языков
при программировании модулей(С++, Pascal, Java и т.п.).
Граф – схемное потоковое параллельное
программирование и его реализация на
кластерных системах
ЯГСПП
Структура модуля
Граф – схемное потоковое параллельное
программирование и его реализация на
кластерных системах
ЯГСПП
Типы связей
Граф – схемное потоковое параллельное
программирование и его реализация на
кластерных системах
ЯГСПП Организационная структура
программы
Граф – схемное потоковое параллельное
программирование и его реализация на кластерных системах
Примеры ГСПП
Постановка задачи: Необходимо разработать ГСПП,
моделирующую работу предприятия по сборке
автомобилей. В разных цехах предприятия (далее модули)
производятся различные компоненты автомобиля, которые
затем передаются в сборочные цеха, где из этих
компонентов постепенно собирается автомобиль.
Компоненты от разных марок автомобилей помечаются
разными тегами и когда на входе появляются все
необходимые компоненты одной марки автомобиля, то они
помещаются на сборочный конвейер. После сборки
автомобиль красят и он проходит предпродажную
подготовку. При этом будем предполагать, что количество
цехов, где производят компоненты автомобилей столько,
сколько различных марок автомобилей будем
рассматривать, а количество сборочных цехов не больше ki
(i=1,..,4) .
Граф – схемное потоковое параллельное
программирование и его реализация на
кластерных системах
Примеры ГСПП
Граф – схемное потоковое параллельное
программирование и его реализация на
кластерных системах
Примеры
ГСПП
Граф – схемное потоковое параллельное
программирование и его реализация на
кластерных системах
Примеры ГСПП
Граф – схемное потоковое параллельное
программирование и его реализация на кластерных системах
Примеры ГСПП
Построим ГСПП решения нелинейного уравнения x ae x bx 3 c x методом
простых итераций с заданной точностью и начальным приближением х0.
ГС программы:
Граф – схемное потоковое параллельное
программирование и его реализация на кластерных системах
Примеры ГСПП
Текстовое представление ГСПП:
1
1
……………………………………………………………………………
Граф – схемное потоковое параллельное
программирование и его реализация на кластерных системах
Операционная семантика
Перейдем к описанию процесса выполнения ГСПП
Модуль ГСПП считается готовым для выполнения по любой из своих
КГВх, если на всех входах этой КГВх (в соответствующих входам
буферах) есть данные, помеченные одним и тем же тегом.
Различные теги идентифицируют различные данные, к которым
одновременно применяется ГСПП, точнее, подпрограммы, отнесенные к
соответствующим КГВх ее модулей (таким образом реализуется
параллелизм множества данных)
Считается, что модули, у которых КГВх не имеют входов (этим КГВх
сопоставляются подпрограммы с пустым множеством параметров), готовы
для выполнения по этим КГВх с момента инициализации выполнения
ГСПП
Граф – схемное потоковое параллельное
программирование и его реализация на кластерных системах
Операционная семантика
При выполнении процесса в его подпрограмме могут использоваться специальные
системные команды (реализуемые посредством обычного обращения к специальным
функциям) WRITE (запись), READ (чтение), OUT (выход) – позволяющие осуществлять
межмодульное взаимодействие.
Команда WRITE имеет формат:
WRITE(<номер КГВых>,<тег>,<список выходов><список
переменных>)
При выполнении команды WRITE сохраняется контекст подпрограммы, точнее процесса, где
она была инициализирована, а после ее выполнения процесс продолжает свое
выполнение в прерванном контексте (обычный механизм возврата после вызова
процедуры).
Для более “тонкой” работы с поступающими на КГВх модулей данными, в частности работы
с сопоставляемыми им буферами, предусмотрена команда:
CHECK(<номер КГВх>.<тег>,<список входов>,<переменная>)
Команда CHECK проверяет наличие данных с указанными тегами на указанных входах КГВх.
Граф – схемное потоковое параллельное
программирование и его реализация на
кластерных системах
Инструментальная среда разработки ГСПП
Предназначена для разработки ГСПП. Можно разделять аспекты
при проектировании программы, последовательно переходя от
графического представления к содержательному, используя
многооконную организацию. В отдельном окне для каждой
КГВх модуля можно задать связанную с ней подпрограмму,
отредактировать текст самой подпрограммы, автоматически
проверить правильность согласования типов входов КГВх с
типами связанных с ними выходов КГВых.
Блок графической
разработки ГСПП
Блок текстовой
разработки ГСПП
Блок взаимной
трансляции
Блок
координации
Блок взаимодействия
с базой данных
ОС Windows
База данных
Граф – схемное потоковое параллельное
программирование и его реализация
на кластерных системах
Реализация языка на кластерных системах
Физическая среда реализации
………
………
………
…
Граф – схемное потоковое параллельное
программирование и его реализация на кластерных системах
Организация управления параллельными вычислениями на кластере
Структура и основные блоки управления процессом выполнения
ГСПП на кластерных системах
Граф – схемное потоковое параллельное
программирование и его реализация на кластерных системах
Функции сервера
1.
Начальное конфигурирование кластера
[в соответствии с затребованными пользователем ресурсами – количеством компьютеров и т.д.]
2.
3.
Запуск на выполнение пользовательских параллельных
программ[“размещение” буферов на указанных пользователем компьютеров]
Приём и обработка сообщений от компьютеров
кластера[которые разделены на следующие категории: - данные о загруженности
компьютеров; - сообщения о непредвиденных ситуациях(отказах, сбоях, восстановлениях); указания администратора(как должна изменяться конфигурация кластера, как изменить стратегию
планирования и др.)]
4.
Планирование загруженности кластера[на основе данных, полученных
5.
Динамическое управление реконфигурированием
кластера в случае отказов и восстановлений
Реакция на запросы администратора о загруженности
кластера, его конфигурации, текущем состоянии.
6.
от компьютеров о их загруженности, сервер указывает, какие компьютера должны произвести
перераспределение процессов]
Граф – схемное потоковое параллельное
программирование и его реализация на кластерных системах
Функции компьютера
–
–
–
приём и обработка сообщений от сервера,
управление выполнением “своих” процессов,
обнаружение отказов, других непредвиденных
ситуаций и информирование о этом сервера,
– определение показателей загруженности,[измерение и
передача на сервер через определённый интервал времени ∆t определённых заранее параметров
загруженности компьютера; в более сложном случае интегральная оценка загруженности]
– периодическое сохранение своего состояния на
случай отказа и необходимости восстановления.
Граф – схемное потоковое параллельное
программирование и его реализация на кластерных системах
Организация управления кластером
Состояние разработки
Программная реализация выполнена на языках Java, C++, C#
Система проходит экспериментальную проверку на различных
задачах на кластере кафедры прикладной математики