BC/NW 2006, №2, (9) :4.2
ПРОГРАММНЫЙ КОМПЛЕКС ДЛЯ МОДЕЛИРОВАНИЯ
ВЫПОЛНЕНИЯ РЕАЛЬНОЙ ПАРАЛЛЕЛЬНОЙ ПРОГРАММЫ НА МНОГОПРОЦЕССОРНОЙ ВЫЧИСЛИТЕЛЬНОЙ
СИСТЕМЕ
В.В. Верстаков, А.В. Филатов
(Москва, Московский Энергетический институт (ТУ),
Россия)
В настоящее время для проведения больших и сложных расчётов всё больше
используются высокопроизводительные многопроцессорные вычислительные системы.
Это обусловлено тем, что многопроцессорная вычислительная система (МВС)
позволяет выполнять расчёты одновременно на нескольких процессорах в
параллельном режиме, что, как известно, позволяет преодолеть ограничения
производительности последовательных вычислений определяемые существующими
технологиями.
Поскольку сфера применения МВС с каждым годом расширяется, то
необходимо, во-первых: обеспечить подготовку эффективных параллельных программ
для МВС; во-вторых, обеспечить подготовку квалифицированных программистов
которые будут создавать и готовить эти программы. Первая из этих задач требует
организации экспериментов с реальными параллельными программами на МВС. Однако
имеется ряд обстоятельств, препятствующих этому.
1. К сожалению МВС являются
пока дорогим и штучным товаром и не каждая организация (или её подразделение)
может себе позволить пробрести её. При этом в случае принятия решения о
приобретении МВС, желательно на начало эксплуатации уже иметь подготовленные
программистские кадры и готовые задачи.
2. Даже при наличии своей МВС
или выхода на МВС другой организации бывает трудно организовать постановку
экспериментальных программ. Это может быть по следующим причинам: а)
экспериментальные программы занимают процессорное время, отнимая его у программ
выполняющих реальные расчёты; б) во время реальной эксплуатации МВС трудно
бывает найти нужное для эксперимента количество свободных процессоров, а тем
более задать нужную топологию их связей.
3. Специфика параллельного
программирования такова, что часто бывает необходимо организовать эксперименты
на МВС с различной структурой. К сожалению, большинство организации не может себе позволить содержать целый парк
МВС на все случаи жизни или на ходу
перестраивать имеющиеся.
Указанные выше нежелательные обстоятельства 1-3 можно обойти путём
постановки экспериментов на моделях МВС. В докладе пойдёт речь о программном
комплексе, который позволяет имитировать выполнение реальной параллельной
программы на модели МВС с заданными параметрами.
При разработке программного комплекса, было принято решение разделить
его на две части. Первая часть отвечает за подготовку моделей, а вторая за
осуществление самого процесса моделирования. В свою очередь первая часть
подразделяется на ПО подготовки моделей параллельных программ и на ПО
подготовки моделей МВС.
При разработке первой версии программного комплекса изначально были
поставлены следующие ограничения:
1. Моделируемые параллельные
программы написаны на языках C и C++ с использованием функции
библиотеки обмена сообщениями международного стандарта MPI.
2. Моделируемые МВС имеют
кластерную архитектуру и состоят из массива однородных вычислительных узлов.
3. Каждый узел МВС может иметь
один или несколько процессоров с общей памятью.
4. Моделируемая программа
выполняется на МВС, как множество параллельных процессов, при этом каждый
процесс выполняет операторы программы одним потоком.
5. Каждый процесс параллельной
программы назначается на свой отдельный процессор и выполняется на нём в
монопольном режиме.
6. В случае выполнения операции
обмена информацией в фоновом режиме её
влиянием на время выполнения основного потока можно пренебречь.
Моделирование осуществляется в два этапа. Диаграмма процесса
моделирования представлена на рис. 1. На первом этапе создаётся модель реальной
параллельной программы. Сначала в текст программы включается разработанный нами
заголовочный файл с библиотекой специальных функций vvvlib1. Текст самой
программы остаётся без изменений. После этого параллельная программа
запускается на выполнения на одном процессоре в режиме разделения времени.
Функции, находящиеся в библиотеке vvvlib1, подменяют собой функции MPI и
служат для фиксации структуры обменов программы и перехвата данных. При этом каждая вызванная функция библиотеки vvvlib1
внутри себя вызывает функцию библиотеки MPI, которую она подменила, для
осуществления её рабочих функций. Таким образом, функциональность программы
остаётся неизменной. Результатом выполнения программы с библиотекой vvvlib1
является структура обменов сообщениями, их параметры и содержимое.
Рис.1. Процесс моделирования выполнения программы на МВС
Далее, в программу, вместо библиотеки vvvlib1, включатся разработанная
нами библиотека vvvlib2. Параллельная программа снова запускается на
выполнение, однако библиотека vvvlib2 устроена так, что все
процессы программы выполняются строго последовательно на одном процессоре в
порядке очерёдности. В отличие от режима разделения времени, каждый процесс
выполняет свои действия от начала до конца практически в монопольном режиме.
Вызовы функций библиотеки MPI заменяются вызовами функций
библиотеки vvvlib2. Они имитируют приём и посылку сообщений
(подставляя содержимое сообщений, ранее
перехваченное функциями vvvlib1) с целью поддержки
функциональности процесса. При этом осуществляется измерение времени выполнения
частей процесса.
Отдельно от процедуры подготовки модели программы, осуществляется
подготовка модели МВС. На самом деле готовится только описательная часть модели
(описательная модель), функциональная же часть модели встроена в моделирующую
программу. Описательная модель МВС получается путём выполнения на реальной МВС
специальных тестовых программ (в первую версию комплекса не входят), а также
путём явной подстановки известных параметров. Кроме этого можно создать модель
гипотетической МВС.
На втором этапе непосредственно осуществляется сам процесс
моделирования. Модель параллельной программы и описательная модель МВС вводятся
в моделирующую программу, задаются параметры функциональной части модели МВС и
распределение процессов по процессорам. Результатом работы моделирующей
программы является диаграмма Ганта и таблицы событий.
Необходимо отметить некоторые достоинства первой версии разработанного
комплекса.
1.
Разделение программ моделирования и подготовки моделей, а также
реализация ПО подготовки модели параллельной программы, в виде библиотеки
функции транслируемой вместе с ней, позволяет достичь платформонезависимости.
2.
Указанная выше особенность 1 позволяет получать реальные времена
выполнения процессов на процессорах интересуемой МВС при последовательном
прогоне всех процессов программы на одном процессоре данной МВС.
Среди недостатков необходимо
указать следующие:
1.
Поскольку при разработке модели параллельной программы дважды
используется один процессор, испытания большой вычислительной задачи может
занять неоправданно много времени.
2.
Имеются трудности в учёте влияния неблокирующих обменов (в рамках MPI) и
работы с разделяемой памятью во время вычислений. Как видно из описания
комплекса, при подготовке модели программы реально учитывается чистое время
расчётов.
3.
Встраивание функциональной части модели МВС в моделирующую программу
приводит к некоторой потере гибкости при перестройке комплекса на новые появляющиеся
структуры МВС и топологии связей.
В следующих версиях
программного комплекса предполагается по возможности ликвидировать указанные
недостатки, сделать его более гибким и более адекватным особенностям выполнения
программ на реальных МВС.
ЛИТЕРАТУРА
1. Гергель В.П., Стронгин Р.Г. Основы параллельных
вычислений для многопроцессорных вычислительных систем. Учебное пособие. –
Нижний Новгород: Издательство ННГУ им. Н.И. Лобачевского, 2003.– 184 с