Вторая версия (1158279), страница 6
Текст из файла (страница 6)
Для получения величины реальных потери из-за рассинхронизации необходимо задать параметр IsSynchrTime=1.
Замечание 2. Предиктор не выдает пользователю характеристики выполнения программы на каждом процессоре.
4.3.2.2Представление программы в виде иерархии интервалов.
Выполнение всей программы целиком рассматривается как интервал самого высокого (нулевого) уровня. Этот интервал может включать в себя несколько интервалов следующего (первого) уровня. Такими интервалами могут быть параллельные циклы, последовательные циклы, а также любые отмеченные программистом последовательности операторов, выполнение которых всегда начинается с выполнения первого оператора, а заканчивается выполнением последнего. Интервалы первого уровня могут в свою очередь включать в себя интервалы второго уровня, и т.д.
Все описанные выше характеристики вычисляются не только для всей программы, но и для каждого ее интервала. В языке Fortran DVM интервал задается следующим образом:
CDVM$ INTERVAL [<целочисленное-выражение>]
<последовательность-операторов>
CDVM$ END INTERVAL
Выделив, например, тело цикла как интервал и задав в качестве целочисленного выражения индексную переменную цикла, можно оформить каждый виток цикла отдельным интервалом. Подобным образом можно получить характеристики четных и нечетных витков цикла, либо характеристики выполнения процедуры при заданных значениях ее параметров.
4.3.2.3Выполнение со сбором статистики. Запуск анализатора производительности. Представление характеристик задачи по интервалам
После окончания выполнения со сбором статистики в текущей директории должен создаться файл статистики с именем sts.gz+ (или просто sts, или <имя задачи>. sts.gz+). Если при сборе данных были обнаружены ошибки, то файл все равно может создаться, а сообщение об ошибке будет выведено на экран или в файл. Список сообщений приведен в приложении 4.
Для получения временных характеристик по интервалам следует выполнить команду:
dvm pa <имя файла статистики> < имя файла с характеристиками>
Все характеристики записываются в текстовом виде в указанный файл. Для каждого интервала выдается следующая информация:
-
имя файла с исходным текстом DVM-программы и номер первого оператора интервала в нем (SOURCE, LINE);
-
тип интервала – вся программа, распределенный параллельный цикл (PAR), последовательный цикл (SEQ) или выделенная пользователем последовательность операторов (USER);
-
номер уровня вложенности (LEVEL);
-
количество входов (и выходов) в интервал (EXE_COUNT);
-
значение выражения, заданного при описании интервала средствами языка (EXPR);
-
основные характеристики выполнения и их компоненты (Main characteristics);
-
минимальные, максимальные и средние значения характеристик выполнения программы на каждом процессоре (Comparative characteristics);
-
характеристики выполнения программы на каждом процессоре (Execution characteristics on processors).
При выдаче характеристик их компоненты располагаются в той же строке (справа в скобках), либо в следующей строке (справа от символов “*” или “-”).
Компоненты некоторых характеристик, связанных с выполнением коллективных операций, выдаются в виде столбцов таблицы, где строки соответствуют типу коллективной операции, а столбцы - характеристикам. Один из столбцов (Nop) этой таблицы содержит количества операций каждого типа, которые являются характеристиками, не зависящими от числа процессоров, используемых для выполнения программы.
Информация о минимальных, максимальных и средних значениях таких характеристик оформлена в таблицу аналогичным образом. Некоторые характеристики вообще не выдаются в том случае, если их значения равны нулю.
4.3.2.4Выполнение со сбором трассы. Запуск DVM-предиктора. Представление прогнозируемых характеристик задачи по интервалам
Точность прогнозирования определяется следующими реализационными ограничениями.
Во-первых, предиктор исходит из того, что соотношение времен выполнения на целевой и инструментальной ЭВМ любых фрагментов данной программы является константой - параметром запуска предиктора. Во-вторых, при прогнозировании времен коммуникации, вызываемой выполнением любой коллективной операции (редукция, обновление теневых граней, загрузка буферов удаленного доступа, и т.п.), учитываются только характеристики коммуникационной сети, количество передаваемых сообщений и их объем. Взаимное влияние коммуникаций, вызванных разными коллективными операциями, при этом не учитывается.
Эти ограничения представляются несущественными в том случае, когда целью программиста является достижение эффективности выполнения его программы на ЭВМ различной архитектуры и производительности. Реальные характеристики параллельной программы являются нестабильными (они могут варьироваться от запуска к запуску в зависимости от процессоров, на которые попала задача, загрузки коммуникационной среды и т.п.), и в таком случае отладка эффективности, используя реальную машину, становится затруднительной. Приходиться по нескольку раз запускать параллельную программу, чтобы определить влияние изменений в лучшую или худшую сторону, или захватывать машину в монопольном режиме (что не всегда возможно).
Предиктор выдает стабильные характеристики, что позволяет пользователю оценить влияние внесенных в программу изменений, и тем самым отладить эффективность параллельной программы.
Если же целью пользователя является получение временных характеристик для конкретной ЭВМ, то выданные предиктором данные необходимо интерпретировать с учетом характеристик эффективности программы, реально полученных на данной целевой ЭВМ, и их нестабильности и с учетом принципиальных ограничений прогнозирования (таких как кэш, моделирование коммуникаций и др.).
Работа с предиктором разбивается на следующие этапы:
-
Настроить файл параметров целевой ЭВМ
-
Выделить иерархию интересующих интервалов выполнения программы
-
Скомпилировать полученную программу
-
Запустить программу на выполнение в режиме сбора трасс
-
Запустить предиктор для каждой интересующей решетки процессоров
Конфигурационная информация, записанная в файле “predictor.par” определяет характеристики целевой (моделируемой) многопроцессорной системы и имеет следующую структуру:
cluster = mvs;
// search optimal processor set 0=off 1=euristik
search=0;
// Cluster properties:
// string = { [int 'x']string [,[int 'x']string]*} | float
// string.CommType = ethernet | transputer | myrinet (num_channels) | string.CommType
// Communication characteristics (mks)
// string.TStart = float
// string.TByte = float
mvs = {512 x mvsP2};
mvs.CommType = myrinet (1);
mvs.TStart = 7;
mvs.TByte = 0.004;
mvsP2 = {2 x mvsP1};
mvsP2.CommType = myrinet (1);
mvsP2.TStart = 1;
mvsP2.TByte = 0.001;
mvsP1 = 1.00;
Предложения, начинающиеся с “//” являются комментариями.
Параметр Cluster указывает какой из кластеров, описанных ниже считать целевым. Это сделано для удобства и для ограничения количества процессоров при поиске оптимальной конфигурации процессоров.
Параметр search позволяет выполнить поиск оптимальной конфигурации процессоров, исходя из общего количества процессоров, заданных в кластере (параметром cluster и параметрами дальнейшего уточнения его структуры). По умолчанию параметр search равен 0 (отключен). Эвристический поиск оптимальной конфигурации задается значением 1. Результаты предсказания программы на оптимальной конфигурации записываются в файл best.html.
Дальнейшая структура кластеров, описывается при помощи двух способов
-
Если кластер состоит из подкластеров (т.е. не из одного процессора), то его описание перечисляется в фигурных скобках через запятую. Перед именем подкластера может стоять число, указывающее на количество таких подкластеров входящих в данный кластер. Структура целевого кластера должна иметь иерархическую структуру (т.е. вложенные кластеры не должны описываться через своих предков).
-
Если кластер состоит из одного процессора, то надо указать отношение его производительности к производительности процессора инструментальной машины, на которой была получена трассировка для предиктора. Если такой параметр не указан, то по умолчанию считается равным 1. Для определения производительности процессоров разработан тест (см. Приложение 6.)
Если кластер состоит из подкластеров, то для него надо указать параметр CommType, который задает тип коммуникационной сети, связывающей подкластеры между собой. Значение ethernet говорит о том, что система подкластеров объединена в сеть с шинной организацией; значение transputer указывает на то, что для коммуникаций между подкластерами используется система транспьютерного типа; а значение myrinet( num_channels ) используется в случаях, когда передача данных между подкластерами осуществляется по нескольким каналам сети myrinet. При этом возможен вариант, когда для задания CommType используется имя коммуникационной среды другого кластера и тогда в качестве параметров новой среды возьмутся такие же параметры. Это следует рассматривать как сокращение записи параметров.
TStart и TByte являются характеристиками коммуникационной среды между подкластерами и равны соответственно ее латентности и пропускной способности. Эти характеристики используются для вычисления времен передач сообщений. Например для сети рабочих станций при вычислении времени передачи n байт используется линейная апроксимация
T = TStart + n * TByte,
где:
TStart | - латентность (стартовое время передачи данных), |
TByte | - пропускная способность (время передачи одного байта). |
Для запуска DVM-программы с накоплением трассировки для предиктора используется команда:
dvm runpred [<processor>] <имя_DVM-программы>
где:
<processor> -топология процессоров, т.е. число процессоров по каждому из измерений решетки процессоров. Является не обязательным параметром, и по умолчанию считается топологией одного процессора.
Результат работы:
-
если не указан параметр <processor>, то в текущей директории создается файл <имя_DVM-программы>.ptr с накопленной трассировкой.
-
если указан параметр <processor>, то в текущей директории создаются файлы типа “n_n.btr” (где n меняется от 0 до количества процессоров, заданных параметром <processor>). В каждом таком файле накоплена трассировка для n-ого процессора из топологии.
Замечание 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. Для того, чтобы в трассу попала информация об интервалах, надо в файле “pred_trc.par” задать значение Is_DVM_STAT = 1.
Замечание 3. Для того, чтобы в трассу попала информация о векторе весов распределения массива с помощью WGTBLOCK, надо в файле “pred_trc.par” задать значение LoadWeightTrace = 1.
Замечание 4. Расширение для накапливаемых на каждом процессоре трасс задается в файле “systrace.rel” параметром TraceBufferExt=ptr;
Для запуска предиктора существует команда:
dvm pred [матрица процессоров] <имя_DVM-программы>
Выполнение команды управляется переменными окружения (см. файл dvm.bat):
-
Pred_sys - имя конфигурационного файла, описывающего целевую машину;
-
Pred_vis - имя программы Web–браузера.
Для работы предиктора необходимо наличие в текущей директории файла трассы “<имя_DVM-программы>.ptr”.
Результат работы:
-
файл best.html, если был указан параметр поиска оптимальной конфигурации процесоров (search = 1 в файле конфигурации процессорной системы).
-
файл <имя_DVM-программы><[матрица процессоров]>.html с характеристиками выполнения программы в виде html-страницы.
-
Если задан Web - браузер (например, Netscape), то он автоматически вызывается и открывает страницу с результатами предсказания выполнения <имя_DVM-программы> на указанной матрице процессоров. Выполнение команды в этом случае завершается после завершения работы браузера.
Структура выходного HTML-файла совпадает со структурой интервалов в программе. Каждому интервалу соответствует свой фрагмент HTML-файла, в котором записаны данные, характеризующие данный интервал, интегральные характеристики выполнения программы на данном интервале и ссылки на фрагменты с информацией о вложенных интервалах. HTML-файл имеет структуру дерева интервалов и снабжен специальными кнопками для просмотра этого дерева в нужном для пользователя порядке.
Каждый фрагмент HTML-файла, содержащий характеристики интервала, начинается с «желтого поля», состоящего из ключа интервала (File - имя файла с исходным текстом DVM-программы, Line - номер строки, в которой расположен первый оператор интервала, Type -типом и, возможно, заданным целочисленным номером – Expr). Кроме того, «желтое поле» содержит две характеристики интервала: Count - количеством входов в интервал и Level – уровень вложенности интервала.