Смекни!
smekni.com

Анализ эффективности MPI-программ (стр. 2 из 7)

· Возможность задания типа передаваемой информации, что позволяет обеспечить ее автоматическое преобразование в случае различий в представлении данных на разных узлах системы.

Однако разработчики MPI подвергаются и суровой критике за то, что интерфейс получился слишком громоздким и сложным для прикладного программиста. Интерфейс оказался сложным и для реализации, в итоге, в настоящее время практически не существует реализаций MPI, в которых в полной мере обеспечивается совмещение обменов с вычислениями.

Появившийся в 1997 проект стандарта MPI-2 [2] выглядит еще более громоздким и неподъемным для полной реализации. Он предусматривает развитие в следующих направлениях:

· Динамическое создание и уничтожение процессов;

· Односторонние коммуникации и средства синхронизации для организации взаимодействия процессов через общую память (для эффективной работы на системах с непосредственным доступом процессоров к памяти других процессоров);

· Параллельные операции ввода-вывода (для эффективного использования существующих возможностей параллельного доступа многих процессоров к различным дисковым устройствам).

Вкратце о других моделях:

Модель неструктурированных нитей. Программа представляется как совокупность нитей (threads), способных выполняться параллельно и имеющих общее адресное пространство. Имеющиеся средства синхронизации нитей позволяют организовывать доступ к общим ресурсам. Многие системы программирования поддерживают эту модель: Win32 threads, POSIXthreads, Javathreads.

Модель параллелизма по данным. Основным её представителем является язык HPF [3]. В этой модели программист самостоятельно распределяет данные последовательной программы по процессорам. Далее последовательная программа преобразуется компилятором в параллельную, выполняющуюся либо в модели передачи сообщений, либо в модели с общей памятью. При этом каждый процессор производит вычисления только над теми данными, которые на него распределены.

Модель параллелизма по управлению. Эта модель возникла в применении к мультипроцессорам. Вместо терминов нитей предлагалось использовать специальные конструкции – параллельные циклы и параллельные секции. Создание, уничтожение нитей, распределение на них витков параллельных циклов или параллельных секций – всё это брал на себя компилятор. Стандартом для этой модели сейчас является интерфейс OpenMP[4].

Гибридная модель параллелизма по управлению с передачей сообщений. Программа представляет собой систему взаимодействующих MPI – процессов, каждый из которых программируется на OpenMP.

МодельпараллелизмаподаннымиуправлениюDVM (Distributed Virtual Machine, Distributed Virtual Memory)[5]. Эта модель была разработана в Институте прикладной математики им. М. В. Келдыша РАН.


3. Обзор средств отладки эффективности MPI-программ

При анализе MPI-программ могут возникать различные сложные ситуации, для анализа которых можно применить специально разработанные инструменты. Эти программы могут помочь в решении возникающих проблем. Большинство таких инструментов объединяет то, что они во время выполнения программы производят сбор информацию в трассу (описание событий), а затем предоставляют различные средства анализа и визуализации полученных данных.

Обычно для целей трассировки в исследуемую программу встраиваются "профилировочные" вызовы, которые фиксируют наступление определенных событий или продолжительность интервалов, и фиксируют эту информацию в журнале трассировки, передают ее online-анализатору или просто модифицируют собираемую статистику.

Можно выделить два основных подхода к анализу производительности:

· A. "Трассировка + Визуализация". Данный подход подразумевает два этапа:

o A1. Во время исполнения программы собирается "трасса", т.е. журнал о ходе работы программы.

o A2. Затем полученная трасса просматривается и анализируется.

· B. "Online-анализ". Поведение программы анализируется непосредственно в ходе ее выполнения.


Рис.1 Схема А. “Трассировка + Визуализация”.

3.1 Общие проблемы всех средств трассировки

1. Формат трасс не унифицирован и обычно ориентирован на конкретную библиотеку передачи сообщений.

2. Сбор информации - слабые возможности настройки фильтров событий (какие события и какую информацию включать в трассы). Нет возможности варьировать объем трассы.

3. Не учитывается эффекта замера - средство трассировки достаточно сильно изменяет поведение программы.

Проблемы визуализации.

1. Что показывать? Какая информация интересна и полезна для отладки эффективности MPI программы.

2. Как показывать? Рис.2 . Надо проводить обобщение собираемой информации. Просто вид всех событий может быть неинформативен.

3. Когда показывать? Важно показывать то, что полезно в данный момент для отладки эффективности, чтобы не загромождать пользователя излишней информацией.


Рис.2 VAMPIR.

3.2 Обзор основных средств отладки

Ниже будут кратко описаны некоторые основные средства отладки MPI-программ:

· AIMS -инструментарий, библиотека мониторинга и средства анализа

· MPE -библиотека сохранения Log-файлов средство визуализации Nupshot

· Pablo - библиотека мониторинга и средства анализа

· Paradyn – динамический инструментарий и ран тайм библиотека

· SvPablo – интегрированный инструментарий, библиотека мониторинга, средства анализа

· VAMPIRtrace - библиотека мониторинга andVAMPIR – средство визуализации


3.2.1 AIMS - Automated Instrumentation and Monitoring System

Место разработки: Некоммерческийпродукт, разрабатываетсяв NASA Ames Research Center врамкахпрограммы High Performance Computing and Communication Program.
Тип Тип А (трассировка + визуализация)
Языки/Библиотеки Fortran 77, HPF, С. Библиотеки передачи сообщений: MPI,PVM,NX.
Платформы IBM RS/6000 SP, рабочие станции Sun и SGI, Cray T3D/T3E.
Функциональность трассировки Сбор трасс. Автоматизированное изменение исходного кода программы путем вставки специальных вызовов. Параллельно со сбором трассы создается файл со статической информацией. Уровни детализации. Подпрограммы, вызовы процедур, процедуры различного типа (процедуры ввода-вывода, MPI процедуры т.п.) Формат трасс. Формат описан в[7]. Ориентирован на передачу сообщений. Тип трассировки. События, статистика (может собираться без полной трассы).
Визуализация Процессы - параллельные линии. События изображаются точками на этих линиях. Особым образом изображаются накладные расходы: времена ожидания, блокировка. Есть возможность "проигрывания" трасс. Время - реальное (астрономическое) Связь линий процессов линиями, обозначающими взаимодействия (передача сообщений, глобальные операции).Диаграммы взаимодействия процессов, временные срезы, история вызовов и трассируемых блоков. Поддерживается связь с исходным кодом.
Статистика Суммарное время по замеряемым инструкциям или типам инструкций и количество срабатываний.

Рис.3 AIMS. Результат подробного анализа запуска.


Vampir, VampirTrace

URL http://www.pallas.de/pages/vampir.htm
Где разрабатывается? Коммерческий продукт, разработка компании Pallas (Германия).
Версии VAMPIR 4.0 (X Window), VAMPIRtrace 4.0
Тип Тип А (трассировка + визуализация). VampirTrace - система генерации трасс (A1), Vampir - система визуализации (A2).
Языки/библиотеки Языки - Fortran, C; передача сообщений в рамках MPI.
Платформы · Cray T3D/T3E· DEC Alpha (OSF/1) · Fujitsu VP 300/700 · Hitachi SR2201 · HP 9000· IBM RS/6000, SP · Intel Paragon · NEC SX-4 · SGI Origin, PowerChallenge (IRIX 6) · Sun SPARC · Intel x86 (Solaris 2.5)
Функциональность трассировки. Сбор трасс. Линковка с VampirTrace - прослойкой между MPI и пользовательской программой. Уровни детализации. Cлабые вохможности настройки уровня детализации - только по подпрограммам. Возможна установка точек начала/конца трассировки. Тип трассировки. Только события (статистика собирается на этапе анализа трасс).
Визуализация Процессы - параллельные линии, события - точки на них. Взаимодействия. Связь линий процессов, матрицы объемов и количества пересылок Другие объекты. Круговые диаграммы и статистические гистограммы. Поддерживается связь с исходным кодом.
Статистика Cуммарное время по замеряемым инструкциям или типам инструкций и количеству срабатываний; отображается на круговых диаграммах и гистограммах.

Рис.4. VAMPIR 4.0

Jumpshot
URL http://www-unix.mcs.anl.gov/mpi/www/www1/Jumpshot.html
Где разрабатывается? Некоммерческое средство, разработано в Аргоннской национальной лаборатории. Распространяется вместе с пакетом MPICH.
Версия Jumpshot 1.0 (требуется Java 1.1 или выше)
Тип A2 (визуализация трасс)
Языки/библиотеки Передача сообщений: MPI.
Платформа Сбор трасс - любые платформы, где работает MPICH. Визуализация - Java.
Функциональность трассировки Сбор трасс. Для получения трассы программу необходимо откомпилировать с профилировочной версией библиотеки MPICH. Формат трасс. CLOG. Тип трасс. События
Визуализация Процессы - параллельные линии, цветом изображается тип функции. Взаимодействия. Связь линий процессов. Другие объекты. Объемы пересылок по времени, гистограммы накладных расходов по времени.
Статистика Суммарные времена работы различных типов процедур.
Разное jumpshot входит в состав MPICH начиная с версии 1.1.1 и заменяет собой Tcl/Tk-программы upshot/nupshot, входившие в состав MPICH более ранних версий.
Pablo Performance Analysis Toolkit Software

Пакет состоит из набора средств: