Предсказатель производительности DVM-программ
(Предиктор)
Руководство пользователя

* Июнь, 2000 *.

- дата последнего обновления 19.10.00 -


Оглавление

1 Введение
2 Генерация файла трассы
3 Представление программы в виде иерархии интервалов
4 Компиляция и прогон программы
5 Подготовка файла конфигурации процессорной системы
6 Опции командной строки предиктора
7 Результаты работы предиктора
8 Протокол работы предиктора


1 Введение

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

Предиктор представляет собой систему обработки трассировочной информации, собранной системой поддержки выполнения DVM-программ (библиотекой Lib-DVM) во время прогона программы на инструментальной ЭВМ и состоит из двух крупных компонент: интерпретатора трассы (PRESAGE) и оценщика времени (RATER). По трассировке и заданным пользователем параметрам целевой ЭВМ, интерпретатор трассы вычисляет временные характеристики выполнения данной программы на целевой ЭВМ (MPP или кластере рабочих станций). При этом он вызывает функции оценщика времени, который, в свою очередь, моделирует параллельное выполнение DVM-программ и является, фактически, моделью библиотеки LIB-DVM, используемой ею библиотеки передачи сообщений (MPI) и аппаратуры.

Эффективность выполнения параллельных программ на многопроцессорных ЭВМ с распределенной памятью определяется следующими основными факторами:

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

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

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

2 Генерация файла трассы

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

3 Представление программы в виде иерархии интервалов

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

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

Разбиением программы на интервалы пользователь управляет при ее компиляции. Он может задать такие режимы, при которых интервалами будут параллельные циклы, либо последовательные циклы, которые содержат внутри себя параллельные циклы, либо все последовательные циклы вообще, либо отмеченные им в программе последовательности операторов. Опции компиляторов, управляющие разбиением программы на интервалы, описаны в руководствах по их использованию. (“Компилятор C-DVM. Руководство пользователя”, “Компилятор Fortran-DVM. Руководство пользователя”).

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

4 Компиляция и прогон программы

После разбиения программы на интервалы необходимо выполнить следующие шаги:

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

  1. Для конвертации, компиляции и сборки программы служат команды:

dvm c <имя_C-DVM-программы>
dvm f <имя_F-DVM-программы>

  1. Для запуска DVM-программы с накоплением трассировки для предиктора используется команда:

    dvm runpred <имя_DVM-программы>

    Результат работы: в текущей директории создается файл <имя_DVM-программы>.ptr с накопленной трассировкой.

    Замечание 1. При выполнении данной команды автоматически устанавливаются следующие параметры:

Is_DVM_TRACE=1; - трассировка включена;
FileTrace=1; - накапливать трассировку в файлах;
MaxIntervalLevel=3; - максимальный уровень вложенности интервалов;
PreUnderLine=0; - не подчеркивать call в файле трассы;
PostUnderLine=0; - не подчеркивать ret в файле трассы;
MaxTraceLevel=0; - максимальная глубина трассы для вложенных функций

Параметры PreUnderLine, PostUnderLine и MaxTraceLevel являются указанием LIB-DVM на то, что не надо накапливать в трассе строки, состоящие из подчеркиваний, а также не надо трассировать вложенные вызовы функций LIB-DVM, что приводит к существенному сокращению размера файла трассы.

Замечание 2. При запуске на одном процессоре параллельной программы, в которой явно указана требуемая ей конфигурация процессоров или предусмотрена динамическая настройка на выделенное количество процессоров, необходимо задать соответствующую “виртуальную” процессорную систему с помощью параметров IsUserPS и UserPS.
Например, для задания “виртуальной” процессорной системы 2*2 значения параметров будут следующими:

IsUserPS=1; - использовать задание “виртуальной” процессорной системы
UserPS=2,2; - топология “виртуальной” процессорной системы

5 Подготовка файла конфигурации процессорной системы

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

Концептуально работа предиктора подразделяется на три основных этапа:

Конфигурационная информация, записанная в файле “predictor.par” определяет характеристики целевой (моделируемой) многопроцессорной системы и имеет следующую структуру:

// System type = network | transputer
type = network;

// Communication characteristics (mks)
start time = 75;
send byte time = 0.2;

// Comparative performance of processors
power = 1.00;

// topologies

//root topology
topology = {4 , 2} ;

Предложения, начинающиеся с “//” являются комментариями.
Параметр
topology определяет топологию целевой процессорной системы, т.е. ее ранг и протяженность по каждому из измерений.задает матрицу Формат параметра в виде topology = {4, 2} процессоров 4 х 2. Если при накоплении трассировки с помощью параметров IsUserPS итопология целевой UserPS была задана “виртуальная” процессорная система, то процессорной системы должна совпадать с топологией “виртуальной” процессорной системы.
Значение параметра
type равное network говорит о том, что целевая процессорная система является сетью рабочих станций с шинной организацией, а значение transputer указывает на то, что целевая процессорная система в качестве коммуникационной сети использует систему транспьютерного типа.
Характеристики
start time и send byte time являются характеристиками передающей аппаратной среды. Эти характеристики используются для вычисления времен передач сообщений. Например для сети рабочих станций при вычислении времени передачи n байт используется линейная апроксимация

T = (start time) + n * (send byte time),

где:

start time - стартовое время передачи данных, а
send byte time - время передачи одного байта.

Параметр power задает отношение производительности процессора целевой системы к производительности процессора инструментальной машины, на которой была получена трассировка для предиктора.

6 Опции командной строки предиктора

Запуск предиктора может осуществляться в режиме командной строки командой:

predictor <par_file> <trace_file> <html_file> [<processor>]

где:

<par_file> - имя файла с конфигурационной информацией о целевой ЭВМ;
<trace_file> - имя файла с накопленной трассой;
<html_file> - имя файла, куда сбрасывается HTML-страница с результатами работы программы;
<processor> - топология процессора, т.е. число процессоров по каждому из измерений решетки процессоров. Данный параметр аналогичен параметру topology конфигурационного файла и “перебивает” последний.

Все параметры командной строки, кроме <processor> являются обязательными.

Для удобства запуска предиктора существует команда:

dvm pred [матрица процессоров] <имя_DVM-программы>

Выполнение команды управляется переменными окружения (см. файл dvm.bat):

Для работы предиктора необходимо наличие файла трассировки с именем <имя_DVM-программы>.ptr, полученного командой dvm runpred.

Результат работы:

Файл <имя_DVM-программы><[матрица процессоров]>.html с html-страницей. Если задан Web - броузер (например, Netscape), то он автоматически вызывается. Выполнение команды в этом случае завершается после завершения работы броузера.

7 Результаты работы предиктора

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

Любая DVM-программа делится на интервалы, которые подразделяются на четыре типа. Выполнение всей программы целиком рассматривается как интервал самого высокого (нулевого) уровня, и является отдельным типом интервала. Этот интервал может включать в себя несколько интервалов следующего (первого) уровня. Такими интервалами могут быть параллельные циклы, называемые параллельными интервалами (PAR), последовательные циклы, называемые последовательными интервалами (SEQ), а также любые отмеченные программистом последовательности операторов, называемые пользовательскими интервалами (USER). Интервалы первого уровня могут в свою очередь включать в себя интервалы второго уровня, и т.д.

Каждый фрагмент HTML-файла, содержащий характеристики интервала, начинается с “желтого поля”, состоящего из ключа интервала (File - имя файла с исходным текстом DVM-программы, Line - номер строки, в которой расположен первый оператор интервала, Type -типом и, возможно, заданным целочисленным номером – Expr). Кроме того, “желтое поле” содержит две характеристики интервала: Count - количеством входов в интервал и Level – уровень вложенности интервала.

По окончании моделирования для каждого интервала вычисляются и выдаются на HTML-странице интегральные характеристики выполнения программы на данном интервале. Ниже приведен список характеристик голубого поля”:

Processorsтопология целевой процессорной системы;

Efficiency – коэффициент эффективности, равный отношению Productive time к Total time;

Execution time – время выполнения, равное максимальному значению среди времен выполнения данного интервала на каждом процессоре;

Total time – общее время использования процессоров, то есть произведение Execution time на число процессоров;

Productive time – полезное время, равное сумме Productive time:CPU, Productive time:SYS и Productive time:I/O:

Productive time:CPU – полезное процессорное время (за вычетом системных расходов);
Productive time:SYSполезные системные расходы;
Productive time:I/O – сумма времен выполнения выданных в интервале операций ввода-вывода, без учета затрат на коммуникации;

Lost time – суммарное потерянное время на интервале:

Lost time:Insufficient parallelism – общее время потерь из-за недостаточного параллелизма (дублирования вычислений на нескольких процессорах):

Lost time:Insufficient parallelism:USRпотери из-за недостаточного параллелизма (за вычетом системных потерь);
Lost time:Insufficient parallelism:SYSсистемные потери из-за недостаточного параллелизма;
Lost time:Communication – общее время коммуникаций, то есть сумма времен коммуникаций всех коллективных операций;

Lost time:Communication:SYN – время потерь из-за рассинхронизации коммуникационных операций;
Lost time:Idle – время простоя процессора;

Load Imbalance – неравномерность загрузки процессоров при параллельных вычислениях;

Synchronization – время потерь из-за рассинхронизации коллективных операций;

Overlap – общее время перекрытия обменов сообщениями и вычислений.

Xарактеристики “зеленого поля” – это характеристики коллективных операций (I/O, Reduction, Shadow, Remote access и Redistribution); по каждой из операций выдаются: число операций, время, затраченное операцией на коммуникации, время потерь из-за рассинхронизации коммуникационных операций и время перекрытия обменов сообщениями и вычислений.

8 Протокол работы предиктора

В процессе работы предиктора в файле logfile.txt в текущей директории накапливается информация об этапах, выполненных предиктором, о необрабатываемых предиктором функциях, имеющихся в трассе, об ошибках, обнаруженных в процессе прогона предиктора.

Файл можно просмотреть с помощью обычного текстового редактора.