Смекни!
smekni.com

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

· 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.

Рис 5. Возможности Pablo.

Paradyn
URL http://www.cs.wisc.edu/paradyn
Где разрабатывается? Некоммерческое средство, разрабатывается в University of Wisconsin,
Версия 4.0
Тип B (онлайн-анализ)
Языки/библиотеки Fortran, Fortran 90, C, C++: MPI, PVM; HPF
Платформы · Sun SPARC (только PVM) · Windows NT на x86 · IBM RS/6000 (AIX 4.1 или старше)
Функциональность трассировки Динамическая настраиваемая инструментовка программ во время выполнения. В код программы во время ее выполнения динамической вставляются и убираются вызовы трассирующих процедур. Все делается автоматически, в результате значительно уменьшаются накладные расходы. Начинает с крупных блоков, затем постепенно детализирует узкие места (для этого программа должна достаточно долго работать)
Визуализация В основе визуализации лежат два вектора · измеряемые параметры производительности: процессорное время, различные накладные расходы, ожидания, времена пересылок и ввода-вывода и т.д. · компоненты программы/вычислительной системы, к которым относятся параметры: процедуры, процессоры, диски, каналы передачи сообщений, барьеры и т.д. На этих векторах образуется матрица: ее элементы либо скаляр (значение, среднее, минимум, максимум и т.д.), либо временная диаграмма (история изменения характеристики). Все характеристики отображаются во время исполнения программы.
Проблемы Есть проблемы с масштабируемостью. На программе при малом числе процессоров (меньше 12) все выглядело нормально, а на большем числе процессоров - более чем 80% увеличение времени. Так же сейчас самой системой занимается очень много памяти.
Развитие Устранение проблем масштабируемости, уменьшение требуемой памяти, поддержка других платформ.
CXperf
URL HP Performance Analysis Tools - http://www.hp.com/esy/lang/tools/Performance/ CXperf User's Guide
Где разрабатывается? Коммерческое средство, разработка 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-программ.

Подробнее можно прочитать в [8].

4. Характеристики и методика отладки DVM-программ

4.1 Основные характеристики производительности

Возможность различать последовательные и параллельные участки программы позволяет при ее выполнении на многопроцессорной ЭВМ спрогнозировать время, которое потребуется для выполнения этой программы на однопроцессорной ЭВМ. Это время называется полезным временем. Тем самым появляется возможность вычислить главную характеристику эффективности параллельного выполнения - коэффициент эффективности, равный отношению полезного времени к общему времени использования процессоров, которое в свою очередь равно произведению времени выполнения программы на многопроцессорной ЭВМ (максимальное значение среди времен выполнения программы на всех используемых ею процессорах) на число используемых процессоров. Разница между общим временемиспользования процессоров и полезным временем представляет собой потерянное время. Если программист не удовлетворен коэффициентом эффективности выполнения своей программы, то он должен проанализировать составляющие части потерянного времени и причины их возникновения.

Существуют следующие составляющие потерянного времени:

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

· потери из-за выполнения межпроцессорных обменов (коммуникации).

· потери из-за простоев тех процессоров, на которых выполнение программы завершилось раньше, чем на остальных (простои).

Время выполнения межпроцессорных обменов, помимо времени пересылки данных с одного процессора на другой, может включать в себя и время, которое тратится из-за того, что операция приема сообщения на одном процессоре выдана раньше соответствующей операции посылки сообщения на другом процессоре. Такая ситуация называется рассинхронизацией процессоров и может быть вызвана разными причинами.

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

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

Для оценки суммарных потенциальных потерь, которые могут возникнуть из-за неодновременного запуска коллективных операций на разных процессорах, служит специальная характеристика – синхронизация.

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

Если бы при входе в каждый параллельный цикл и при выходе из него производилась бы синхронизация процессоров (межпроцессорный обмен), то разбалансировка загрузки процессоров обязательно приводила бы к потерям из-за рассинхронизации. Однако, поскольку такая синхронизация осуществляется не для всех циклов, то разбалансировка на разных участках программы может компенсироваться и реальные потери могут быть незначительными или вообще отсутствовать. Для оценки возможных потерь из-за разбалансировки программисту может выдаваться некоторая обобщенная характеристика - разбалансировка. С целью снижения накладных расходов привычислении этой характеристики делается предположение, что синхронизация процессоров будет производиться только один раз - при завершении выполнении программы. Поэтому сначала для каждого процессора определяется его суммарная вычислительная загрузка, а затем прогнозируется вызываемая разбалансировкой величина потерь из-за рассинхронизации. Однако, поскольку в реальной программе синхронизация процессоров осуществляется не только при завершении программы, а гораздо чаще, то реальные потери будут превосходить эту величину. Реальные потери из-за рассинхронизации будут еще более превосходить величину разбалансировки в том случае, когда вычислительная загрузка процессоров сильно изменяется при многократном выполнении одного и того же параллельного цикла.