ParaCon

advertisement
Система параллельного
программирования на основе типовых
алгоритмических структур
Истомин Тимофей
Научный руководитель:
д.ф-м.н. Берзигияров П.К.
ParaCon
Работа выполняется при финансовой
поддержке РФФИ, грант 01-07-90056
Постановка задачи
Создание высокоуровневого
средства разработки
параллельных программ.
ParaCon
Высокий уровень
+





Строгость
Простота
Скорость
разработки
возможность
автоматического
анализа
Переносимость
ParaCon
–



Ограниченность
Эффективность
Сложность
инструментария
Цели



Простота проектирования и наглядность
представления параллельных программ
Предоставление возможностей
повторного использования наработок
Избавление от некоторых рутинных
этапов процесса создания
параллельной программы
ParaCon
Основы подхода



Использование готовых шаблонов
(скелетов) часто используемых
алгоритмов
Гибкость – настраиваемость и
масштабируемость шаблонов
Связывание и включение шаблонов
друг в друга
ParaCon
Типовые Алгоритмические
Структуры
ParaCon
Определение
Типовая алгоритмическая структура (ТАС)– это
параметризуемый параллельный алгоритм,
шаблон, фиксирующий схему решения
некоторой задачи.
Данные
ТАС(Ps, Pf)
Результат
Ps – структурные параметры,
Pf – функциональные параметры.
ParaCon
Примеры ТАС
Map Независимый по данным параллелизм.
К каждому элементу массива X
применить функцию y = f(x)
Reduce Операция над массивом типа
X[]->z (например суммирование, поиск
максимума, и т.д.)
Farm Дублирование вычислительных
элементов.
Pipe Конвейер
Comp Последовательная композиция
Seq Последовательный код
ParaCon
f
?
f
f
manager
workers
F1
1
F2
2
FN
N
Программирование



Анализ задачи
Представление решения с помощью набора ТАС
Параметризация каждой использованной ТАС
ParaCon
Дерево алгоритма
Алгоритм решения задачи представляется
в виде дерева типовых
алгоритмических структур
Pipe
Seq 1
Farm
Seq 2
ParaCon
Comp
Seq 3
Map
Reduce
Seq 1
Seq 2
Описание системы
ParaCon
Устройство системы

Библиотека шаблонов
Содержит реализации шаблонов на какомлибо языке программирования

Визуальный конструктор
Позволяет собирать программу из шаблонов и
генерировать код на целевом языке
ParaCon
Библиотека шаблонов
Шаблоны взаимодействия низкого
и высокого уровней
 Типовые алгоритмические
структуры
 Структуры данных
 Операции разбиения и сборки
данных

ParaCon
Типы коммуникационных
шаблонов





Comm – группа процессоров с
фиксированной виртуальной топологией
Stream – байтовый поток
ExternalProtocol обеспечивает общение
ТАС с внешней для нее средой (например,
с объемлющей ТАС)
Distributor производит рассылку данных
по процессорам одной группы
Gatherer собирает результаты работы
группы процессоров
ParaCon
Типы операций с данными




Builder строит структуру данных из
байтовой строки
Decomposer производит разбиение
данных на куски для дальнейшей
рассылки
Composer собирает структуру данных из
кусков
Data – интерфейс, который реализуют все
структуры данных
ParaCon
Схема работы с данными
декомпозиция
(Decomposer)
данные
(Data)
рассылка
(Distributor)
сборка
Gatherer
кусочки
(Data[])
кусочки
(Data[])
группа процессоров
(Comm)
ParaCon
композиция
Composer
результат
(Data)
Параметры ТАС Map



Внешний протокол для получения данных и
отправки результатов
Параметры внутреннего протокола: группа
процессоров, способы (де)композиции,
рассылки и сборки данных.
Применяемая к элементу данных функция
(вложенная ТАС)
ParaCon
Структура программы
Программа состоит из секций:
 Создание объектов
 Связывание объектов
 Запуск на счет самой внешней ТАС
На всех процессорах запускается одна
программа.
ParaCon
Работа ТАС Map
void run()
{
ProcID currentProc = MyComm.getProcID();
if (currentProc.equals(MyHeadProc)) {
Data task = MyExtProt.getTask();
MyDistributor.distribute(task);
children[currentProc].run();
Data result = MyGatherer.gather();
MyExtProt.sendResult();
}
else children[currentProc].run();
}
ParaCon
Конструктор
Визуальный редактор алгоритма
 Анализатор
 Генератор кода
 Программный интерфейс для
встраиваемых модулей (plugins)

ParaCon
Расширение
функциональности
Создание компонента:



Класс, написанный в рамках модели
Его описание на XML (тип, зависимости,
параметры и их допустимые значения,
схема размещения на процессорах)
Модуль параметризации к конструктору
(plugin)
ParaCon
Спасибо за внимание
ParaCon
Download