· Возможность задания типа передаваемой информации, что позволяет обеспечить ее автоматическое преобразование в случае различий в представлении данных на разных узлах системы.
Однако разработчики 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 Схема А. “Трассировка + Визуализация”.
1. Формат трасс не унифицирован и обычно ориентирован на конкретную библиотеку передачи сообщений.
2. Сбор информации - слабые возможности настройки фильтров событий (какие события и какую информацию включать в трассы). Нет возможности варьировать объем трассы.
3. Не учитывается эффекта замера - средство трассировки достаточно сильно изменяет поведение программы.
Проблемы визуализации.
1. Что показывать? Какая информация интересна и полезна для отладки эффективности MPI программы.
2. Как показывать? Рис.2 . Надо проводить обобщение собираемой информации. Просто вид всех событий может быть неинформативен.
3. Когда показывать? Важно показывать то, что полезно в данный момент для отладки эффективности, чтобы не загромождать пользователя излишней информацией.
Рис.2 VAMPIR.
Ниже будут кратко описаны некоторые основные средства отладки 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. Результат подробного анализа запуска.
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
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 более ранних версий. |
Пакет состоит из набора средств: