Система параллельного программирования на основе типовых алгоритмических структур Истомин Тимофей Научный руководитель: д.ф-м.н. Берзигияров П.К. 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