Система разработки параллельных программ PARUS Сальников А. Н. Факультет ВМиК МГУ
Цели диссертационной работы Создать среду программирования для разработки и исполнения параллельных программ в гетерогенной среде. Предложить способ описания алгоритма решения задачи как набора действий, взаимодействующих между собой через передачу данных.
Общая схема работы системы PARUS На вход системы поступает программа, оформленная как блок-схема потока данных. Создатель алгоритма формирует набор этапов алгоритма и описывает схему их взаимодействия как процесс обмена информацией между этапами алгоритма. В результате получается ориентированный граф потока данных. При создании программы этапы описываются как текстовый файл с набором операторов языка C (допустимы определения переменных и декларации типов). Система PARUS воспринимает такое описание алгоритма, преобразует его в программу и осуществляет запуск алгоритма, где обмен информацией между этапами реализован через вызовы MPI-функций без участия создателя алгоритма.
Краткое описание граф-программы Алгоритм описывается как сеть из вершин: истоков внутренних вершин стоков Описание графа хранится в текстовом файле, по которому затем строится C++ код c MPI вызовами. Чтение и инициализаци я данных Обработка данных Запись результатов
Структура описания ребра графа Массивы принимаемой и передаваемой информации по рёбрам графа разбиваются на непересекающиеся фрагменты (чанки). Принимающей стороной фрагменты могут быть собраны в другом порядке. Int a[]; Int b[]; Принимающая вершина
Пример текстового описания вершины number 1 type 1 weight 100 layer 2 num_input_edges 1 edges ( 1 ) num_output_edges 1 edges ( 2 ) head "head" body "node" tail ""
Пример текстового описания ребра number 2 weight 2 type GRAPH_NONE num_var 1 num_send_nodes 1 send_nodes ( 2 ) num_recv_nodes 1 recv_nodes ( 5 ) name "*data_out" type GRAPH_DOUBLE left_offset "0" right_offset "window_size+F_LEN" name "*data_out" type GRAPH_DOUBLE left_offset "0" right_offset "window_size"
Этап создания граф-программы разработчиком Исходный файл граф-программы Преобразователь в C++ c MPI вызовами С++ граф-программа Редактор графа
Этапы работы с системой PARUS Тестирование многопроцессорной системы Создание параллельной программы и её компиляция Построение расписания и исполнение параллельной программы
Цели этапа тестирования Обеспечить систему PARUS сведениями о производительности процессоров и пропускной способности коммуникационной среды для этапа исполнения граф-программы. Получить усреднённую производительность процессоров многопроцессорной системы при выполнении определённого числа действий с плавающей точкой. Выяснить среднюю пропускную способность каналов многопроцессорной системы при передаче сообщения фиксированного размера при заданном уровне шумовых сообщений.
Этап тестирования многопроцессорной системы Тест сети Тест процессоров Результаты теста Монитор Сетевой информации
Тестирование производительности процессоров Измерения производительности каждого процессора осуществляются с помощью типового теста (перемножения матриц определённого размера). Результат записывается как вектор в файл (элемент вектора - время работы каждой MPI- нити на каждом из процессоров в секундах). В дальнейшем этот файл будет использоваться при вычислении времени выполнения вершины на процессоре.
Тестирование коммуникационной среды С помощью системы тестов измеряется время передачи сообщений между MPI- процессами. По результатам работы каждого теста формируется 4-мерное представление производительности сети (длина сообщения, передающий процессор, принимающий процессор, время передачи).
Машины, на которых проводилось тестирование MBC1000-M, 768 процессоров Alpha (кластерная архитектура) IBM eServer pSeries 690 (Регата), 16 процессоров Power4+ ( NUMA архитектура) Sun Fujitsu PRIMEPOWER 850 Server, 16 процессоров SPARC64-V (архитектура с общей памятью)
Пример визуализации результатов тестирования
Пример визуализации загруженности каналов связи МВС-1000М, задействовано 15 процессоров, длина передаваемого сообщения 1000 байт
Модель параллельных процессов, используемая PARUS Параллельная программа строится как множество независимых между собой процессов (MPI-процессов), где каждый связан со своим исполнителем (процессором или компьютером целиком). Взаимодействие процессов и синхронизация их работы происходит с помощью передачи сообщений.
Механизм исполнения граф-программы Полученная скомпилированная С++ программа запускается на многопроцессорной системе, в результате получается множество MPI-процессов, по числу задействованных процессоров. Для обеспечения исполнения граф-программы PARUS разделяет MPI-процессы по ролям. В процессе исполнения программы на многопроцессорной системе производится динамическое назначение вершин графа по MPI-процессам. Минимизируются времена передач данных. Выбирается процессор, на котором время обработки вершины минимально (в случае гетерогенной машины). Передача по рёбрам происходит одновременно с обработкой других вершин граф-программы передающим MPI- процессом.
Разделение MPI-процессов по ролям Управляющая нить: Выбирает вершину для назначения на нить Выбирает ребро для назначения на нить Остальные нити: Исполняют вершины Хранят наработанные вершинами данные Пересылают и принимают данные по рёбрам другим MPI-процессам
Режимы назначения вершин на обработку MPI-процессами PARUS Статический Назначение вершин происходит согласно расписанию, составленному заранее при помощи генетического алгоритма с учётом данных, полученных на этапе тестирования Динамический Расписание не составляется, а назначение вершин происходит в моменты освобождения процессоров с учётом данных, полученных на этапе тестирования Комбинированный Предоставляет возможность учитывать пожелания разработчика граф-программы по назначению вершины на MPI-процесс
Этап построения расписания и исполнения параллельной программы Исходный файл граф-программы Построитель расписаний Результаты тестов Откомпилированная граф-программа Результаты работы Расписание
Апробация системы PARUS производилась на решении следующих практических задач: Искусственная нейронная сеть (параллельный перцептрон) Распределённая операция над массивом Построение множественного выравнивания нуклеотидных последовательностей
Параллельная реализация перцептрона Каждый слой сети разделяется на группы. Нейроны, попадающие в одну группу, относятся к одной вершине графа. Рёбра между нейронами сливаются в одно ребро и превращаются в рёбра между группами.
Зависимость ускорения от числа входов по отношению к 2-процессорной реализации параллельного перцептрона
Результаты тестирования (число групп меньше числа процессоров)
Параллельная реализация определённой операции над массивом чисел (на примере суммирования). массив делится n на частей размера m. Эти части независимо друг от друга суммируются, в результате получается n значений суммы. получившийся массив также делится на части размера не больше, чем m, и процедура повторяется.
Граф-программа для реализации параллельного суммирования Массив разбит для операции над 2-мя элементами.
Ускорение для распределённого суммирования на машине МВС1000-М
Эффективность для распределённого суммирования на машине МВС1000-М
Множественное выравнивание нуклеотидных последовательностей Выравнивание используется для моделирования эволюции живых организмов, предсказания генов, и других задач генетики AY TAGACGCGCTAGCTTCAGGTGTTAGTGTCCTTACGGACGTGGGGGTTCAAGTCCCCCCCC AY TAGAC---CTCAACTGAGGTCTTTTTTTATGCCTGAAATCCAGTGTTTATCTATCTTTCC MC2TRGC CAGACGCACTAGACTTAGGATCTAGCGTCTTT---GACGTAAGGGTTCAAGTCCCTTATC ECTRNAL TAGACACGCTACCTTGAGGTGGTAGTGCCCAATAGGGCTTACGGGTTCAAGTCCCGTCCT **** ** * *** * * *** * * * AY TCGCACCACGACTTT---AAAG--AATTGAACTAAAAATTCAAAAAGCAGTATTTCGGCG AY CGCTATATTAACTCTCTCAAGGTCAACC GATATCAACGTAC-ATCTACCAACA MC2TRGC CCCCACCA--ATTTT---GAATTTAACC------AGATTTTTCTGGTTTTTTATTTGAAA ECTRNAL CGGTACCA-AATTCC---AGAA--AA GAGACGCTGAAAAGC-GTCTTTTTTCG * * * ** * * AY AGTAGCG----CAGCTTGGTAGC- AY TAT MC2TRGC TTTTAAAATGTTATTTTAAGAAAT ECTRNAL TTTTG GTCCTGGT----
Доступ к построителю множественного выравнивания Реализация параллельной программы, осуществляющей множественное выравнивание нуклеиновых и аминокислотных последовательностей, доступна online по адресу:
Данные для тестирования задачи множественного выравнивания. Основу составила коллекция длинных терминальных повторов класса 5 (LTR5). Совместный проект Института физико-химичесой биологии им. А.Н. Белозерского МГУ и Людвиговского института раковых исследований "Ludwig Institute for Cancer Research", грант CRDF RB01277-MO-2. Alexeevski A.V., Lukina E.N., Salnikov A.N., Spirin S.A. Database of long terminal repeats in human genome: structure and synchronization with main genome archives // Proceedings of the fours international conference on bioinformatics of genome regulation and structure, Volume 1. BGRS 2004, Novosibirsk, редакционно-издательский отдел ИциГ СО РАН, стр
Результаты тестирования Тестирование проводилось на машине Prime Power 850. В однопроцессорном варианте множественное выравнивание для ~1200 последовательностей длины ~1000 занимает 1 час 8 минут. В многопроцессорном варианте для 12 процессоров – 28 минут (ускорение приблизительно в 2,4 раза).
Результаты диссертационной работы Создана форма описания параллельной программы как графа зависимости по данным между последовательными фрагментами кода, а также компилятор языка, который строит исходный код на С++ со вставками вызовов MPI-функций. Предложен алгоритм управления MPI-процессами и передачами данных при исполнении граф-программы на многопроцессорной системе. Реализовано 3 алгоритма назначения вершин графа на MPI-процессы с использованием данных, полученных на этапе тестирования многопроцессорной системы. Исследована применимость системы PARUS на основе созданных параллельных программных реализаций для модельных задач. Программная реализация компонент системы PARUS оформлена как система с открытым исходным кодом и доступна в Internet по адресу: и используется для решения ряда практических задач.
Спасибо за внимание!