debugDDr (1158410)

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

Текст из файла

Институт прикладной математики им. М.В.Келдыша

Российская Академия наук

DVM отладчик

Детальный дизайн

Февраль, 2000

Оглавление

1.1 Метод динамического контроля DVM-указаний 4

1.2 Типы выявляемых ошибок 4

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

4.1 Таблица 9

4.2 Хеш-таблица 11

4.3 Таблица переменных 15

4.4 Модуль выдачи диагностики 20

4.4.1 Обработка контекста диагностики 20

4.4.2 Функции выдачи диагностики 24

5.1 Контроль инициализации переменных и элементов массивов 28

5.2 Контроль доступа к элементам распределенного массива 29

5.3 Контроль приватных и неизменяемых переменных 30

5.4 Контроль редукционных переменных 30

5.5 Контроль использования буфера удаленных элементов 30

5.6 Реализация системы динамического контроля DVM-указаний 31

5.6.1 Режим работы динамического контроля с таблицей переменных 31

5.6.2 Основные функции модуля динамического контроля 32

5.6.3 Параметры системы динамического контроля 39

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

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

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

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

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

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

6.5 Реализация системы сравнения результатов выполнения 47

6.5.1 Основные структуры системы сравнения результатов выполнения 47

6.5.2 Модуль записи трассировки 59

6.5.3 Модуль накопления трассировки 61

6.5.4 Модуль чтения трассировки 64

6.5.5 Модуль сравнения трассировки 65

6.5.6 Модуль обработки редукции 69

6.5.7 Параметры системы сравнения результатов выполнения 71

1Функции DVM отладчика

DVM отладчик предназначен для отладки DVM-программ (написанных на языках Fortran-DVM и C-DVM). Для отладки DVM-программ используется следующий подход. Сначала программа отлаживается на рабочей станции как последовательная программа с использованием обычных средств отладки. Затем программа выполняется на той же рабочей станции в специальном режиме проверки DVM-директив. На третьем этапе программа выполняется на параллельном компьютере в специальном режиме сравнения промежуточных результатов выполнения с эталонными результатами (например, с результатами последовательного выполнения).

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

В общем случае можно выделить следующие четыре класса ошибок:

  • Синтаксические ошибки в DVM-указаниях (неправильная запись оператора, отсутствие скобки и т.д.), а также нарушение статической семантики.

  • Неправильная последовательность выполнения DVM-указаний или неправильные параметры DVM-указаний.

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

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

Ошибки первого класса выявляются при компиляции.

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

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

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

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

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

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

1.1Метод динамического контроля DVM-указаний

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

1.2Типы выявляемых ошибок

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

  • Необъявленная зависимость по данным в параллельном цикле или между параллельными задачами.

  • Чтение неинициализированных переменных.

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

  • Использование редукционных переменных после запуска асинхронной редукции, но до ее завершения.

  • Выход за пределы распределенного массива.

  • Необъявленный доступ к нелокальным элементам распределенного массива.

  • Запись в теневые грани распределенного массива.

  • Чтение теневых элементов массива до завершения операции их обновления.

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

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

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

2Состав DVM отладчика

Отладчик можно разбить на две, четко выраженные, системы: динамический контроль и сравнение результатов выполнения.

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

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

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

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

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

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

  • Блок накопления трассировки в памяти. Производит накопление и структуризацию трассировочных событий в ходе выполнения программы.

  • Блок записи трассировки в файл. Используется из блока накопления трассировки при задании режима записи трассировки в ходе выполнения программы.

  • Блок чтения трассировки из файлов. Использует как вспомогательный блок накопления трассировки.

  • Блок сравнения трассировок. Сравнивает события трассируемой программы с эталонной трассировкой, сформированной предварительно в памяти блоком накопления трассировки.

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

3Прототипы отладочных функций

Система поддержки Lib-DVM содержит дополнительные системные вызовы, относящиеся к динамическому отладчику и отвечающие за динамический контроль и сравнение трассировки. Обращения к данным вызовам подставляются компиляторам C-DVM и Fortran-DVM при компиляции программы в специальном отладочном режиме.

Прототипы отладочных функций следующие:

long dprstv_(long *TypePtr, AddrType *addr, long *Handle, char *Operand, long OperLength)

TypePtr

тип переменной (константы rt_INT, rt_LONG, rt_FLOAT или rt_DOUBLE). Если тип не соответствует ни одному из стандартных типов, то данное обращение будет проигнорировано для трассировки;

addr

адрес переменной или элемента массива;

Handle

дескриптор DVM-массива, если обращение идет к элементу массива. Иначе аргумент должен быть равным NULL;

Operand

строка с именем операнда. Данная строка будет выводиться в сообщениях об ошибках и трассировке;

OperLength

длина строки, переданной в Operand. Данный аргумент служит для совместимости с Fortran. При вызове из Си должен быть равен –1.

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

long dstv_(void)

Функция отмечает завершение вычисления выражения и присвоение переменной нового значения. Функция должна вызываться после присвоения переменной нового значения и должна быть парной с вызовом dprstv_().

long dldv_(long *TypePtr, AddrType *addr, long *Handle, char *Operand, long OperLength)

TypePtr

тип переменной (константы rt_INT, rt_LONG, rt_FLOAT или rt_DOUBLE). Если тип не соответствует ни одному из стандартных типов, то данное обращение будет проигнорировано для трассировки;

addr

адрес переменной или элемента массива;

Handle

дескриптор DVM-массива, если обращение идет к элементу массива. Иначе аргумент должен быть равным NULL;

Operand

строка с именем операнда. Данная строка будет выводиться в сообщениях об ошибках и трассировке;

OperLength

длина строки, переданной в Operand. Данный аргумент служит для совместимости с Fortran. При вызове из Си должен быть равен –1.

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

long dbegpl_(long *Rank, long *No, long *Init, long *Last, long *Step)

Rank

ранг параллельного цикла;

No

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

Init

массив размерности Rank начальных значений итерационных переменных цикла;

Last

массив размерности Rank конечных значений итерационных переменных цикла;

Step

массив размерности Rank значений шага итерационных переменных.

Функция отмечает начало параллельного цикла. Обращение к данному вызову должно идти до отображения параллельного цикла ( функция mappl).

long dbegsl_(long *No)

No

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

Функция отмечает начало последовательного цикла. Ранг последовательного цикла всегда принимается равным 1.

long dbegtr_(long *No)

No

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

Функция отмечает начало области задач. Ранг области задач всегда принимается равным 1.

long dendl_(long *No, unsigned long *Line)

No

номер завершающейся конструкции;

Line

строка, в которой произошел выход из конструкции. Служит для контроля корректности завершения параллельных циклов.

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

long diter_(AddrType *index)

index

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

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

long drmbuf_(long* ArrSrc, AddrType* RmtBuff, long* Rank, long* Index)

ArrSrc

дескриптор исходного DVM-массива, для которого создается буфер удаленного доступа;

RmtBuff

адрес скалярной переменной, если буфер создается для единичного элемента массива, или дескриптор DVM-массива, выполняющего роль буфера, если буфер создается для вырезки массива;

Rank

ранг буфера удаленного доступа. Должен быть равен 0, если буфер создается в скалярной переменной;

Index

массив, содержащий индексы вырезаемых измерений. Если элемент массива не равен -1, то из DVM-массива берется вырезка, соответствующая данному элементу массива, иначе берется все измерение массива.

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

long dskpbl_(void)

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

4Реализация базовых модулей

4.1Таблица

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

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

Тип файла документ

Документы такого типа открываются такими программами, как Microsoft Office Word на компьютерах Windows, Apple Pages на компьютерах Mac, Open Office - бесплатная альтернатива на различных платформах, в том числе Linux. Наиболее простым и современным решением будут Google документы, так как открываются онлайн без скачивания прямо в браузере на любой платформе. Существуют российские качественные аналоги, например от Яндекса.

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

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

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

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