debugDDr (1158410), страница 6

Файл №1158410 debugDDr (Раздаточные материалы) 6 страницаdebugDDr (1158410) страница 62019-09-18СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 6)

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

<Имя параметра>=<Значение>.

Динамическим контролем используются следующие значения:

EnableDynControl – динамический контроль выполняется, если параметр больше 0, и динамический контроль запрещен при значении 0.

DebugOptions.ErrorFile – имя файла с диагностикой об ошибках. В данный файл выводятся сообщения об ошибках, найденных при динамическом контроле, если значение параметра DebugOptions.ErrorToScreen равно 0. Если попытки открытия файла окажутся неуспешными, то диагностика будет выводиться на экран.

DebugOptions.HashIndexSize – размер индекса хеш-таблицы для таблицы переменных.

DebugOptions.HashTableSize – размер массивов хеш-таблиц.

DebugOptions.VarTableSize – размер таблиц переменных.

DebugOptions.ErrorToScreen – если значение не равно 0, то вся диагностика динамического контроля выводится на экран.

DebugOptions.PrintStatistic – если значение параметра не равно 0, то по окончании работы программы печатается статистика работы с таблицей переменных. Статистика выводится в файл DebugOptions.ErrorFile или на экран в зависимости от значения параметра DebugOptions.ErrorToScreen.

DebugOptions.AppendErrorFile – определяет режим записи в файл диагностики при его использовании. Если значение равно 0, то при каждом запуске задачи содержимое этого файла стирается.

DebugOptions.MaxErrors – определяет максимальное число ошибок, после которого динамический контроль будет отключен.

DebugOptions.CheckVarInitialization – если значение не равно 0, то разрешена проверка инициализации скалярных переменных.

DebugOptions.CheckVarReadOnly – если значение не равно 0, то разрешена проверка использования переменным с доступом только на чтение.

DebugOptions.CheckReductionAccess – если значение не равно 0, то разрешена проверка использования редукционных переменных.

DebugOptions.CheckDisArrInitialization – если значение не равно 0, то разрешена проверка инициализации элементов распределенных массивов.

DebugOptions.CheckDisArrLimits – если значение не равно 0, то разрешена проверка обращений к элементам распределенного массива за пределами его границ.

DebugOptions.CheckDisArrEdgeExchange – если значение не равно 0, то разрешена проверка обмена теневых граней распределенных массивов.

DebugOptions.CheckDisArrSequentialAccess – если значение не равно 0, то разрешена проверка использования элементов распределенных массивов в последовательной части программы.

DebugOptions.CheckDisArrLocalElm – если значение не равно 0, то разрешена проверка на принадлежность элемента распределенного массива его локальной части.

DebugOptions.CheckDataDependence – если значение не равно 0, то разрешена проверка на зависимость параллельных циклов по данным.

DebugOptions.CheckRemoteBufferAccess – если значение не равно 0, то разрешена проверка использования буферов удаленного доступа.

HashMethod – определяет алгоритм вычисления хеш-значения. 0 – используется функция StandartHashCalc, 1 – используется функция OffsetHashCalc.

HashOffsetValue – величина смещения для алгоритма OffsetHashCalc. Допускаются значения от 0 до 16.

6Метод сравнения результатов выполнения

6.1Накопление трассировки

При накоплении результатов вычислений в файл записывается следующая информация:

  • Значения всех переменных при доступе к ним на чтение.

  • Значения всех переменных при доступе к ним на запись.

  • Значения результатов вычисления редукции.

  • Начало выполнения области параллельных задач и параллельного или последовательного цикла.

  • Начало выполнения нового витка цикла или новой параллельной задачи.

  • Завершение выполнения области параллельных задач и параллельного или последовательного цикла.

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

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

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

Для того чтобы сократить объем накапливаемой информации, для каждого цикла, для каждой области задач и для всей программы в целом можно задать следующие уровни накопления:

  • Отсутствие трассировки.

  • Трассировка только начала и завершения областей задач и начала самих задач, начала и завершения циклов и начала витков циклов.

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

  • Полная трассировка (включает трассировку всех событий).

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

6.2Сравнение результатов

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

При последующем выполнении программы, трассируемые события сравниваются с эталонными.

При этом, учитываются следующие особенности выполнения программы в параллельном режиме:

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

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

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

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

6.3Контроль редукционных операций

Накопление редукционных переменных осуществляется специальным образом. Значения редукционных переменных во время их вычисления в параллельном цикле не сравниваются с эталонными. Сравниваются только результаты окончательного вычисления редукции.

Для контроля правильности спецификации редукционной операции, вычисление редукционной операции производится двумя различными способами. Первый способ – это стандартный метод вычисления редукции. Сначала на каждом процессоре выполняются отображенные на него витки параллельного цикла или параллельные задачи, в которых в соответствии с заданным программистом алгоритмом будет вычислен частичный результат редукции. Конечный результат редукционной операции вычисляется библиотекой Lib-DVM путем объединения всех частичных результатов в соответствии с описанной программистом редукционной операцией. Если программа выполняется последовательно (или параллельно, но на одном процессоре), то редукционная операция целиком будет вычислена в соответствии с заданным программистом алгоритмом.

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

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

6.4Форматы входных и выходных файлов

6.4.1Конфигурационный файл трассировки

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

Как уже было сказано, существуют следующие уровни подробности трассировки:

  • отсутствие трассировки (уровень NONE);

  • трассировка начала и завершения циклов или областей задач и начала витков или задач (уровень MINIMAL);

  • предыдущий уровень, плюс трассировка модификаций переменных и результатов вычисления редукции (уровень MODIFY);

  • трассировка всех событий (уровень FULL).

Уровень подробности трассировки всей программы задается при запуске программы в файле параметров. Уровень подробности трассировки для каждой конструции программы задается в конфигурационном файле. Если уровень подробности для конструкции не задан, то он наследуется от объемлющей конструкции. Если объемлющей конструкции не существует, то принимается уровень всей программы.

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

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

Комментарии в конфигурационном файле начинаются с символа ‘#’. Вся строка после этого символа игнорируется.

Структура конфигурационного файла следующая:

# Trace size = <объем всей трассировки>

# String count = <число строк всей трассировки>

<SL | PL | TR> <номер конструкции> (<номер объемлющей конструкции>) [<ранг цикла>] {<имя файла>, <номер строки>} = <NONE | MINIMAL | MODIFY | FULL>, (<измерение>:<первый виток>, < последний виток>, <шаг >), …

# Trace size = <объем трассировки конструкции>

# String count = <число строк трассировки конструкции>

# Count of traced iterations = <число трассируемых витков или задач>

EL: <номер конструкции>

………

<SL | PL | TR> <номер конструкции> (<номер объемлющей конструкции>) [<ранг цикла>] {<имя файла>, <номер строки>} = <NONE | MINIMAL | MODIFY | FULL>, (<измерение>:<первый виток>, < последний виток>, <шаг >), …

# Trace size = <объем трассировки конструкции>

# String count = <число строк трассировки конструкции>

# Count of traced iterations = <число трассируемых витков или задач>

EL: <номер конструкции>

Все параметры исполняющихся конструкций задаются после символа ‘=’. Запись SL соответствует обычному последовательному циклу, запись LP соответствует параллельному циклу а запись TR – области параллельных задач.

Если множество трассируемых витков не задано, то будут трассироваться все витки или задачи. Множество витков задается следующим образом:

(<измерение> : [<первый виток>] , [<последний виток>] , [<шаг>])

<измерение> – измерение цикла (начинается с 0) для которого задается диапазон. Области задач и последовательные циклы всегда имеют только одно измерение с номером 0. Данный параметр обязателен.

<первый виток> – номер витка, начиная с которого будут трассироваться витки. По умолчанию – с первого витка.

<последний виток> – номер витка, по который будут трассироваться витки. По умолчанию – по последний виток.

<шаг> – шаг, с которым будут трассироваться витки. По умолчанию полагается единице.

Примеры задания множества витков:

  • (0:2,10,) – трассировать витки со 2-ого по 10-ый.

  • (0:,10,) – трассировать витки по 10-ый включительно.

  • (0:4,,) – трассировать витки, начиная с 4-ого.

  • (0:,,3) – трассировать каждый 3-й виток.

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

6.4.2Файл трассировки

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

Формат заголовка идентичен формату конфигурационного файла и имеет следующий вид:

Характеристики

Список файлов учебной работы

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
7021
Авторов
на СтудИзбе
260
Средний доход
с одного платного файла
Обучение Подробнее