DEB_GU~2 (1158346)
Текст из файла
27
Отладка DVM–программ.
Руководство пользователя.
Оглавление
1. Введение 2
2. Что такое DVM-программа? 2
3. Типы ошибок в DVM-программе 2
4. Динамический контроль DVM-указаний 3
5. Сравнение результатов выполнения 4
6. Средства накопления и анализ системной трассировки 5
7. Настройка DVM-системы 5
8. Опции конверторов 6
8.1. Опции конверторов, управляющие режимами работы программ 6
8.2. Опции конверторов для динамического отладчика 6
8.3. Опции конверторов для анализа производительности 6
9. Команды DVM-системы 7
9.1. Программы, использующие библиотеки последовательных программ 10
9.2. Многомодульные программы в Windows 10
9.3. Многомодульные программы в Unix 10
10. Методика отладки DVM-программ 10
10.1. Отладка обычной последовательной программы 10
10.2. Получение отладочных вариантов DVM-программы для последовательного и параллельного выполнения 11
10.3. Выполнение программы в режиме динамического контроля DVM-указаний 11
10.4. Накопление эталонного файла трассировки DVM-программы 11
10.5. Сравнение эталонной трассировки с результатами выполнения параллельной программы на одном процессоре 12
10.6. Сравнение трассировки параллельного выполнения с эталонной 13
10.7. Накопление трассировки параллельной программы 14
10.8. Параллельное выполнение с реальными данными 14
10.9. Оценка объема трассировки 15
10.10. Управление объемом файла трассировки 15
10.11. Запуск программ с нестандартным набором параметров 16
11. Параметры DVM-системы 17
11.1. Параметры динамического контроля 18
11.2. Параметры накопления и сравнения трассировки 19
11.3. Параметры вывода информационных сообщений системы поддержки 21
11.4. Параметры управления системной трассировкой 21
12. Диагностические сообщения динамического отладчика 23
12.1. Динамический контроль 23
12.2. Накопление и сравнение трассировки 24
13. Структура файла описания циклов 25
14. Структура трассировки вычислений 25
15. Сообщения об ошибках системы поддержки 27
16. Структура файла системной трассировки 27
1.Введение
Языки C-DVM и Fortran-DVM (в дальнейшем F-DVM) предназначены для разработки мобильных и эффективных параллельных программ для ЭВМ различной архитектуры. Они являются расширениями стандартных языков C и Fortran 77. Параллельная программа представляет собой обычную последовательную программу, в которую вставлены DVM-указания, определяющие ее параллельное выполнение. DVM-указания прозрачны для стандартных компиляторов, поэтому DVM-программа обрабатывается ими как обычная последовательная программа.
Для отладки DVM-программ предлагается следующий подход.
Сначала программа отлаживается на рабочей станции как обычная последовательная программа (в режиме игнорирования DVM-указаний) с использованием привычных средств отладки. Затем, на рабочей станции программа запускается в специальном режиме динамического контроля DVM-указаний, что позволяет выявить их правильность и полноту. На следующем этапе программа может быть запущена на параллельной машине или кластере рабочих станций (или на рабочей станции с имитацией параллельного выполнения) в режиме сравнения ее промежуточных результатов с эталонными, полученными, например, при ее последовательном выполнении. Кроме того, для локализации ошибок при параллельном выполнении программы служат средства накопления трассировочной информации.
2.Что такое DVM-программа?
DVM-программа – это один или несколько файлов с исходными текстами на языках C-DVM или F-DVM, имеющие соответственно расширения .cdv и .fdv.
Получение готовой программы (выполняемого файла) осуществляется в три этапа:
-
конвертация C-DVM или F-DVM программы в C- или Fortran-программу с получением одноименного файла (файлов) с расширениями соответственно .c или .f;
-
компиляция полученного на предыдущем этапе файла (файлов) стандартными компиляторами с языков С или Fortran;
-
связывание полученного объектного модуля (модулей) с библиотеками программ, используемых пользователем (если есть), и с библиотекой Lib-DVM – системой поддержки выполнения параллельных DVM-программ.
3.Типы ошибок в DVM-программе
DVM-программа может содержать ошибки разного рода. Эти ошибки можно разбить на несколько классов по степени их влияния на работоспособность программы, по легкости выявления и т.д.
В общем случае можно выделить следующие пять классов ошибок:
-
Ошибки в последовательной программе.
-
Синтаксические ошибки в DVM-указаниях (неправильная запись оператора, отсутствие скобки и т.д.), а также нарушение статической семантики.
-
Неправильная последовательность выполнения DVM-указаний или неправильные параметры DVM-указаний.
-
Неправильное выполнение вычислений из-за некорректности DVM-указаний и ошибок, не проявляющихся при последовательном выполнении программы.
-
Аварийное завершение параллельного выполнения программы (авосты, зацикливания, зависания) из-за некорректности DVM-указаний и ошибок, не проявляющихся при последовательном выполнении программы.
Ошибки первого класса диагностируются:
-
стандартными компиляторами с языков С или Fortran при компиляции в режиме игнорирования DVM-указаний (см.п.9);
-
средствами отладки, принятыми для обычных последовательных программ.
Ошибки второго класса диагностируются при конвертации C-DVM или F-DVM программ (см.п.8 и п.9). Список диагностических сообщений конверторов C-DVM и F-DVM см. соответственно в инструкциях по использованию компиляторов C-DVM и Fortran-DVM.
Ошибки третьего класса диагностируются библиотекой Lib-DVM при параллельном выполнении программы: функции библиотеки проверяют корректность порядка выполнения DVM-указаний и передаваемых параметров (список сообщений об ошибках см. в п.15).
Ошибки четвертого класса выявляются DVM-отладчиком при:
-
запуске DVM-программы на одном процессоре в режиме динамического контроля (см.п.4);
-
запуске DVM-программы на одном или нескольких процессорах в режиме сравнения результатов ее параллельного выполнения с эталонными результатами, полученными при ее последовательном выполнении (см.п.5).
Ошибки пятого класса могут быть выявлены при:
-
анализе трассировки вычислений при параллельном выполнении программы (см.п.5);
-
анализе накопленной системной трассировки - трассировки вызовов функций Lib-DVM (см.п.6).
4.Динамический контроль DVM-указаний
Динамический контроль DVM-указаний позволяет проверить корректность распараллеливания программы посредством DVM-указаний, и основан на моделировании параллельного выполнения DVM-программы во время ее последовательного выполнения на одном процессоре.
Для динамического контроля программы ее следует сначала сконвертировать в режиме получения отладочного варианта параллельной программы (см.п.8 и п.9).
Однако использование данного метода существенно замедляет выполнение программы и требует больших объемов дополнительной памяти. Поэтому, его следует применять только для программы со специально подобранными тестовыми данными ограниченного объема.
Динамический контроль позволяет выявлять ошибки следующих типов:
-
Необъявленная зависимость по данным в параллельном цикле.
-
Использование в параллельном цикле или после выхода из него приватных переменных без их предварительной инициализации.
-
Запись в переменные, доступные только на чтение.
-
Использование редукционных переменных после запуска асинхронной редукции, но до ее завершения.
-
Необъявленный доступ к нелокальным элементам распределенного массива.
-
Запись в теневые грани массива.
-
Чтение теневых элементов массива до завершения операции их обновления.
-
Модификация нелокального элемента распределенного массива в последовательной части программы.
-
Выход за пределы распределенного массива.
-
Запись в буфер удаленного доступа.
5.Сравнение результатов выполнения
Отсутствие ошибок при динамическом контроле не гарантирует правильной работы параллельной программы по следующим причинам:
-
динамический контроль не проверяет правильность описания редукционных операций;
-
источником ошибок могут быть процедуры, вызываемые из DVM-программ, но написанные на других языках и не подлежащие динамическому контролю;
-
отлаженная последовательная программа может содержать ошибки, которые не проявились при ее последовательном выполнении, но могут проявиться при параллельном выполнении.
Для поиска таких ошибок используется метод накопления и сравнения трассировок вычислений, который позволяет определить место в программе и момент, когда появляются расхождения в результатах вычислений.
При трассировке вычислений выполняется сбор информации обо всех чтениях и модификациях переменных, о начале и конце выполнения параллельного цикла, а также о начале выполнения каждого витка цикла.
Трассировка вычислений, как и динамический контроль, требовательна к ресурсам вычислительной системы. Поэтому рекомендуется сначала трассировать программы с тестовыми данными, а затем уже переходить к реальным данным. Однако при выполнении программ с реальными данными, не всегда можно собрать трассировку в полном объеме из-за ее больших размеров. В этом случае перед накоплением трассировки следует оценить ее объем как для всей программы в целом, так и для отдельных ее частей.
Степенью подробности (а значит и объемом) трассировки можно управлять:
-
при конвертации программы опциями C-DVM и F-DVM конверторов (см.п.8);
-
при выполнении программы с помощью параметров трассировки (см.п.11.2);
-
при выполнении программы с помощью файла описания циклов (см.п.10.10).
6.Средства накопления и анализ системной трассировки
Системная трассировка (трассировка вызовов функций Lib-DVM) позволяет проследить последовательность вызовов функций, их параметры и времена выполнения. Имеется два режима сбора системной трассировки (см.п.11.4):
-
буферизация в оперативной памяти каждого процессора с последующей записью в файл при нормальном завершении программы (запись в файл производится на процессоре ввода-вывода);
-
запись в файлы без буферизации на каждом процессоре (с возможностью выталкивания информации о каждом событии из системных буферов).
Степень подробности трассировки управляется параметрами (см.п. 11.4). При этом следует помнить, что для трассировки некоторых часто вызываемых функций библиотеки Lib-DVM она должна быть скомпилирована в специальном режиме, задаваемом переменными периода компиляции. Полный список трассируемых событий приведен в файле events.def в директории \SOURCE DVM-системы, в котором имени каждого события сопоставлен его номер.
Файлы с системной трассировкой имеют текстовый формат (см.п.16) и могут анализироваться с помощью обычных редакторов и визуализаторов.
7.Настройка DVM-системы
DVM-система настраивается на окружение пользователя в два этапа:
-
перед инсталляцией настраивается файл, запускающий инсталляцию DVM-системы (см. Инсталляция DVM-системы – файл readme.txt);
-
после инсталляции, но перед началом работы с задачами пользователя настраивается файл запуска dvm-команд, который предварительно пользователь переписывает в свою рабочую директорию из директории \USER DVM-системы.
В файле запуска dvm-команд определены следующие переменные окружения, которые могут быть изменены пользователем:
| dvmdir | - полное имя (с путем) директории, в которой расположена DVM-система (настраивается автоматически при инсталляции); |
| dvmpar | - директория и расширение файлов базового набора параметров DVM-системы (по умолчанию: \PAR\.rel); |
| usrpar | - директории и имена (с расширениями) файлов параметров DVM-системы, в которых пользователь может корректировать базовый набор параметров (переменная может содержать несколько значений, разделенных пробелами); |
| optconv | - опции C-DVM и F-DVM конверторов; |
| optcomp | - вызов и опции стандартного C-компилятора; |
| optfcomp | - вызов и опции стандартного Fortran-компилятора; |
| optlink | - опции линковщика; |
| dvmlib | - библиотека системы поддержки DVM-программ (\LIB\dvm.lib); |
| usrlib | - библиотеки, используемые в программе пользователя; |
| dvmout | - включение (on) и отключение (off) вывода сообщений: |
| dvmoutfile | - имя файла, в который направляется вывод задачи пользователя |
| dvmlog | - включение (1) и отключение (0) протоколирования сеанса работы пользователя (если не задан dvmoutfile, то вывод идет в файл dvm.log); |
| dvmshow | - включение (1) и отключение (0) вывода на экран всех выполняемых dvm-команд; |
| dvmsave | - включение (1) и отключение (0) сохранения промежуточных файлов (конвертации, компиляции и т.д.). |
В своей рабочей директории (там, где запускается задача) пользователь может иметь несколько заранее подготовленных вариантов файла запуска dvm-команд различными именами, содержащих различные значения переменных окружения. Тогда при запуске dvm-команд используется соответствующий префикс (см.п.9).
8.Опции конверторов
Опции C-DVM и F-DVM конверторов управляют:
-
режимами работы DVM-программы (последовательный или параллельный);
-
именем выходного (.c или .f) файла.
-
выводом номера версии конвертора и некоторой другой информации;
-
степенью подробности трассируемых динамическим отладчиком данных (см.п.10);
-
разбиением программы на интервалы для анализа ее производительности.
8.1.Опции конверторов, управляющие режимами работы программ
| -p | - (по умолчанию) получение параллельного варианта программы: обрабатываются все DVM-указания; |
| -s | - получение последовательного варианта программы: |
| -o<file> | - имя выходного .с или .f файла |
| -v | - вывод номера версии, имени выходного файла, и т.д. |
8.2.Опции конверторов для динамического отладчика
| -d1 | - обеспечивается трассировка только модификаций распределенных массивов |
| -d2 | - обеспечивается трассировка чтений и модификаций распределенных массивов |
| -d3 | - обеспечивается трассировка модификаций всех данных |
| -d4 | - обеспечивается трассировка чтений и модификаций всех данных |
8.3.Опции конверторов для анализа производительности
| -e1 | - интервалами становятся все параллельные циклы и объемлющие их последовательные циклы; |
| -e2 | - интервалами становятся все параллельные циклы и объявленные пользователем последовательности операторов; |
| -e3 | = e1 + e2; |
| -e4 | = e3+ интервалами становятся все последовательные циклы; |
9.Команды DVM-системы
Команды DVM-системы имеют следующий формат:
Характеристики
Тип файла документ
Документы такого типа открываются такими программами, как Microsoft Office Word на компьютерах Windows, Apple Pages на компьютерах Mac, Open Office - бесплатная альтернатива на различных платформах, в том числе Linux. Наиболее простым и современным решением будут Google документы, так как открываются онлайн без скачивания прямо в браузере на любой платформе. Существуют российские качественные аналоги, например от Яндекса.
Будьте внимательны на мобильных устройствах, так как там используются упрощённый функционал даже в официальном приложении от Microsoft, поэтому для просмотра скачивайте PDF-версию. А если нужно редактировать файл, то используйте оригинальный файл.
Файлы такого типа обычно разбиты на страницы, а текст может быть форматированным (жирный, курсив, выбор шрифта, таблицы и т.п.), а также в него можно добавлять изображения. Формат идеально подходит для рефератов, докладов и РПЗ курсовых проектов, которые необходимо распечатать. Кстати перед печатью также сохраняйте файл в PDF, так как принтер может начудить со шрифтами.















