ParaCon Система параллельного программирования на основе типовых алгоритмических структур Истомин Тимофей Научный руководитель: д.ф-м.н. Берзигияров П.К. Работа выполняется при финансовой поддержке РФФИ, грант
ParaCon Постановка задачи Создание высокоуровневого средства разработки параллельных программ.
ParaCon Высокий уровень + Строгость Простота Скорость разработки возможность автоматического анализа Переносимость – Ограниченность Эффективность Сложность инструментария
ParaCon Цели Простота проектирования и наглядность представления параллельных программ Предоставление возможностей повторного использования наработок Избавление от некоторых рутинных этапов процесса создания параллельной программы
ParaCon Основы подхода Использование готовых шаблонов (скелетов) часто используемых алгоритмов Гибкость – настраиваемость и масштабируемость шаблонов Связывание и включение шаблонов друг в друга
ParaCon Типовые Алгоритмические Структуры
ParaCon Определение Типовая алгоритмическая структура (ТАС)– это параметризуемый параллельный алгоритм, шаблон, фиксирующий схему решения некоторой задачи. ДанныеРезультат ТАС(Ps, Pf) Ps – структурные параметры, Pf – функциональные параметры.
ParaCon Примеры ТАС Map Независимый по данным параллелизм. К каждому элементу массива X применить функцию y = f(x) Reduce Операция над массивом типа X[]->z (например суммирование, поиск максимума, и т.д.) Farm Дублирование вычислительных элементов. Pipe Конвейер Comp Последовательная композиция Seq Последовательный код manager workers ? f f f F1F2FN 12 N
ParaCon Программирование Анализ задачи Представление решения с помощью набора ТАС Параметризация каждой использованной ТАС
ParaCon Дерево алгоритма Алгоритм решения задачи представляется в виде дерева типовых алгоритмических структур Seq 1 Pipe Seq 3Farm Seq 2 Map Comp Reduce Seq 1 Seq 2
ParaCon Описание системы
ParaCon Устройство системы Библиотека шаблонов Содержит реализации шаблонов на каком- либо языке программирования Визуальный конструктор Позволяет собирать программу из шаблонов и генерировать код на целевом языке
ParaCon Библиотека шаблонов Шаблоны взаимодействия низкого и высокого уровней Типовые алгоритмические структуры Структуры данных Операции разбиения и сборки данных
ParaCon Типы коммуникационных шаблонов Comm – группа процессоров с фиксированной виртуальной топологией Stream – байтовый поток ExternalProtocol обеспечивает общение ТАС с внешней для нее средой (например, с объемлющей ТАС) Distributor производит рассылку данных по процессорам одной группы Gatherer собирает результаты работы группы процессоров
ParaCon Типы операций с данными Builder строит структуру данных из байтовой строки Decomposer производит разбиение данных на куски для дальнейшей рассылки Composer собирает структуру данных из кусков Data – интерфейс, который реализуют все структуры данных
ParaCon Схема работы с данными группа процессоров (Comm) данные (Data) кусочки (Data[]) декомпозиция (Decomposer) рассылка (Distributor) сборка Gatherer композиция Composer результат (Data) кусочки (Data[])
ParaCon Параметры ТАС 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 Спасибо за внимание