Средства анализа производительности параллельных приложений

Максим Филамофитский (maxim@vvv.srcc.msu.su)
Лаборатория параллельных информационных технологий, НИВЦ МГУ

Содержание документа


Введение

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

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

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

  • A. "Трассировка + Визуализация". Данный подход подразумевает два этапа:
    • A1. Во время исполнения программы собирается "трасса", т.е. журнал о ходе работы программы.
    • A2. Затем полученная трасса просматривается и анализируется.
  • B. "Онлайн-анализ". Поведение программы анализируется непосредственно в ходе ее выполнения.

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

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

Терминология

Трасса (trace) - журнал событий какого-либо типа, произошедших во время выполнения программы.

"Проигрывание" трасс - эмуляция выполнения программы на основе собранной трассы.

Временной срез - состояние всех процессов программы в некоторый фиксированный момент времени.


План изложения

Информация о каждом средстве будет представлена по следующему плану (некоторые из пунктов могут быть опущены)
1. Название
2. URL (ссылка на Web-страницу продукта)
3. Текущая версия, к которой относится описание
4. Где разрабатывается? Коммерческий или бесплатно распространяемый продукт
5. Тип продукта (A,A1,A2,B - см.
выше)
6. Поддерживаемые языки/библиотеки (обычно поддерживаются языки Fortran 77 и С, библиотеки передачи сообщений MPI и PVM).
7. Поддерживаемые аппаратные платформы и ОС
8. Функциональность трассировки. Описывается отдельно для средств типа A и В.
Для типа A:

  • Сбор трасс
  • Уровни детализации
  • Формат трасс
  • Тип трасс: журнал всех событий или статистика
Для типа B: что и как измеряется во время выполнения.
9. Визуализация
  • Процессы и События
  • Тип и масштаб времени
  • Взаимодействия
  • Других объектов
  • Связь с исходным кодом
10. Статистика
11. Разное (совместимость с другими системами, проблемы в использовании и др.)
12. Планы разработчиков (развитие системы и т.д.)

AIMS - Automated Instrumentation and Monitoring System

URL http://science.nas.nasa.gov/Software/AIMS/
Где разрабатывается? Некоммерческий продукт, разрабатывается в 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 процедуры т.п.)

Формат трасс. Формат описан в документации. Ориентирован на передачу сообщений.

Тип трассировки. События, статистика (может собираться без полной трассы).

Визуализация
  1. Процессы - параллельные линии. События изображаются точками на этих линиях. Особым образом изображаются накладные расходы: времена ожидания, блокировка. Есть возможность "проигрывания" трасс.
  2. Время - реальное (астрономическое)
  3. Связь линий процессов линиями, обозначающими взаимодействия (передача сообщений, глобальные операции).
  4. Диаграммы взаимодействия процессов, временные срезы, история вызовов и трассируемых блоков.
  5. Поддерживается связь с исходным кодом.
СтатистикаСуммарное время по замеряемым инструкциям или типам инструкций и количество срабатываний.
СовместимостьЕсть конверторы в форматы Pablo, ParaGraph и AVS/Explorer.
РазвитиеИсправление найденных ошибок в системе: проблема многих пользователей, ошибки с директивами "include". Улучшение системы генерации трасс с целью уменьшения накладных расходов.

Vampir, VampirTrace

URLhttp://www.pallas.de/pages/vampir.htm
Где разрабатывается? Коммерческий продукт, разработка компании Pallas (Германия).
ВерсииVAMPIR 2.0 (X Window), VAMPIRtrace 1.5
ТипТип А (трассировка + визуализация). 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уммарное время по замеряемым инструкциям или типам инструкций и количеству срабатываний; отображается на круговых диграммах и гистограммах.

Jumpshot

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

Pablo Performance Analysis Toolkit Software

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

  • SvPablo - визуализатор статистической информации (X Window).
  • SDDF - библиотека для записи трасс и набор средств для работы с SDDF файлами
  • Trace Library and Extensions - библиотека для трассировки
  • I/O Analysis - статистика операций ввода-вывода
  • MPI I/O Analysis - статистика MPI I/O
  • HDF (Hierarchical Data Format) Analysis - анализ использования HDF операций
  • Analysis GUI - библиотека средств для просмотра SDDF трасс
  • IO Benchmarks - cбор трасс операций ввода-вывода
URL http://vibes.cs.uiuc.edu/Software/Pablo/pablo.htm
Где разрабатывается? Некоммерческий пакет, разработан в университете шт. Иллинойс.
Языки/библиотеки ANSI C, Fortran 77, Fortran 90 (с ограничениями), HPF (Portland Group).
Платформы
  • SvPablo - SunOS 5.6, SGI Irix 6.5
  • Trace Library and Extensions - Sun SunOS, Sun Solaris, RS6000, SP2, Intel Paragon, Convex Exemplar, SGI IRIX
  • I/O Analysis - Sun Solaris, SGI IRIX
  • MPI I/O Analysis - Sun SunOS, SGI IRIX
  • HDF Analysis - Sun Solaris, SGI IRIX
  • Analysis GUI - Sun Solaris (X11R5+Motif)
  • IO Benchmarks - Sun Solaris, SGI IRIX, Intel Paragon
Функциональность трассировки.
    Уровни детализации. Hа уровне интерфейсов, можно делать ручную разметку с использованием svPablo. Формат трасс - SDDF
    Тип трасс. Статистика, события.
Визуализация

SvPablo. Основа визуализации - связь с исходным кодом. Представляет цветом число вызовов и общее время фрагмента.

Analysis GUI. Библиотека подпрограмм для визуализации трасс в формате SDDF

Статистика Развернутые средства статистики, в виде набора пакетов.
  • I/O Analysis: анализ операций ввода-вывода
  • MPI I/O Analysis: анализ ввода-вывода MPI функций
  • HDF Analysis: анализ операций HDF.
Совместимость Есть конверторы из разных форматов в SDDF - IBM VT Trace, AIMS.
РазвитиеПоддержка HPF, Fortran 90. Поддержка MPI 2.0.

Paradyn

URL http://www.cs.wisc.edu/paradyn
Где разрабатывается? Некоммерческое средство, разрабатывается в University of Wisconsin,
Версия2.1
ТипB (онлайн-анализ)
Языки/библиотекиFortran, Fortran 90, C, C++: MPI, PVM; HPF
Платформы
  • Sun SPARC (только PVM)
  • Windows NT на x86
  • IBM RS/6000 (AIX 4.1 или старше)
Функциональность трассировки Динамическая настраиваемая инструментовка программ во время выполнения. В код программы во время ее выполнения динамической вставляются и убираются вызовы трассирующих процедур. Все делается автоматически, в результате значительно уменьшаются накладные расходы. Начинает с крупных блоков, затем постепенно детализирует узкие места (для этого программа должна достаточно долго работать)
Визуализация В основе визуализации лежат два вектора
  • измеряемые параметры производительности: процессорное время, различные накладные расходы, ожидания, времена пересылок и ввода-вывода и т.д.
  • компоненты программы/вычислительной системы, к которым относятся параметры: процедуры, процессоры, диски, каналы передачи сообщений, барьеры и т.д.

На этих векторах образуется матрица: ее элементы либо скаляр (значение, среднее, минимум, максимум и т.д.), либо временная диаграмма (история изменения характеристики).

Все характеристики отображаются во время исполнения программы.

Проблемы Согласно [1], есть проблемы с масштабируемостью. На их программе при малом числе процессоров (меньше 12) все выглядело нормально, а на большем числе процессоров - более чем 80% увеличение времени. Так же сейчас самой системой занимается очень много памяти.
Развитие Устранение проблем масштабируемости, уменьшение требуемой памяти, поддержка других платформ.

CXperf

URL HP Performance Analysis Tools - http://www.hp.com/esy/lang/tools/Performance/
Где разрабатывается? Коммерческое средство, разработка Hewlett-Packard.
Тип A (трассировка + визуализация)
Языки/библиотеки HP ANSI C (c89), ANSI C++ (aCC), Fortran 90 (f90), HP Parallel 32-bit Fortran 77
Платформы Сервера HP на базе PA-RISC
Функциональность трассировки Сбор и настройка трасс осуществляется с помощью указания специальных профилировочных опций компилятора.
Визуализация 3D-визуализация, связь с кодом программы, масштабирование, сопоставительный анализ, графы вызовов.

Другие средства

Некоторые другие средства анализа поведения паралелльных программ, не рассмотренные подробно в данном обзоре:

  • XMPI - графическая среда запуска и отладки MPI-программ, входит в состав пакета LAM.
  • HP Pak - набор средств от Hewlett-Packard для анализа поведения многопоточных программ.
  • TAU (Tuning and Analysis Utilities) - некоммерческий набор утилит анализа производительности программ, написанных на языке C++ и его параллельных вариантах. Включает пакет профилировки TAU Portable Profiling.
  • Carnival
  • Chiron - средство для оценки производительности многопроцессорных систем с общей памятью.
  • Pangaea
  • GUARD - параллельный отладчик.
  • MPP-Apprentice - средство в составе Message-Passing Toolkit от SGI.
  • ParaGraph
  • PGPVM2
  • TraceInvader
  • XPVM - графическое средство мониторинга PVM-программ.

Смотрите также:

  1. Review of Performance Analysis Tools for MPI Parallel Programs (обзор средств анализа производительность MPI-программ)
  2. Execution and Performance Analyzers - большой список средств анализа производительности и отладчиков для параллельных программ.