Диалоговая оболочка для отладки DVM-программ

Описание моделей параллельного программирования. Особенности модели параллелизма DVM. Элементы графической оболочки отладки DVM-программ: средства для отладки эффективности, функциональной отладки, анализа системной трассировки. Команды DVM-системы.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 14.10.2010
Размер файла 2,0 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

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

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

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

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

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

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

Оболочка реализована на языке программирования Visual С++ 6.0 с использованием каркаса приложений Microsoft Foundation Class Library (MFC) в среде Microsoft Visual Studio 6.0. Программа состоит из 20 файлов с исходным кодом, 22 заголовочных файла и файлов ресурсов, содержащих 22 класса. Всего исходный код занимает порядка 7500 строк, в откомпилированном виде занимает 352KБ.

Программа отлаживалась на тестовых примерах DVM-системы, а также на программах перемножения матриц, написанных в рамках параллельного практикума.

Литература

[1] Описание DVM-системы: http://www.keldysh.ru.

[2] MPI: A Message-Passing Interface Standard. http://www.mpi-forum.org

[3] OpenMP Consortium. http://www.openmp.org

[4] Модели параллельного программирования. http://www.ccas.ru

[5] Материалы сайта http://www.parallel.ru.

[6] Robert Hood and Gabriele Jost, “Support for debugging automatically parallelized programs”, MRJ Technology Solutions - Numerical Aerospace Simulation Division, NASA Ames Research Center, Processing of the Fourth International Workshop on Automated Debugging, August, 2000, Munich.

[7] P. Kacsuk, “Systematic debugging of parallel programs based on collective breakpoints”, Hungarian Academy of Sciences, OMFB project WINPAR-DEBUGGER No. E151, 2003.

[8] Jeffrey S. Vetter and Bronis R. de Supinski, “Dynamic software testing of MPI applications with umpire”, Center for Applied Scientific Computing, 0-7803-9802/2000/$10.00 © 2000 IEEE.

[9] Robert Hood and Gabriele Jost, “A debugger for computational grid applications”, MRJ Technology Solutions - Numerical Aerospace Simulation Division, NASA Ames Research Center, 0-7695-0556-2/00$10.00 © 2000 IEEE.

[10] Mark E. Crovella and Thomas J. LeBlanc. Performance debugging using parallel performance predicates. In Proceedings of the 3rd ACM/ONR Workshop on Parallel and Distributed Debugging, pages 140-150, May 1993.

Приложение 1

Форма выдачи характеристик производительности

- 50 -

Приложение 2

Структура файла функциональной трассировки

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

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

MODE = <NONE | MINIMAL | MODIFY | FULL>, [EMPTYITER]
# Begin trace header. Don't modify these records
<SL | PL | TR> <
номер конструкции> (<номер объемлющей конструкции>) [<ранг цикла>] {<имя файла>, <номер строки>} = <NONE | MINIMAL | MODIFY | FULL>, (<измерение>:<первый виток>, < последний виток>, <шаг >), …
EL: <
номер конструкции>

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

END_HEADER
# End trace header

Строка MODE определяет уровень подробности трассировки всей программы и режим накопления пустых витков. Все остальные строки определяют параметры для конкретных конструкций программы.

После заголовка, в файле трассировки идут записи следующих типов и форматов:

§ Чтение переменной:
RD: [<тип переменной>] <имя переменной> = <значение>; {<файл>, <строка>}

§ Начало оператора присваивания нового значения переменной:
BW: [<тип переменной>] <имя переменной> ; {<файл>, <строка>}

§ Запись нового значения переменной:
AW: [<тип переменной>] < имя переменной > = <значение>; {<файл>, <строка>}

§ Чтение редукционной переменной:
RV_RD: [<тип переменной >] < имя переменной > = < значение >; {< файл>, <строка >}

§ Начало оператора присваивания нового значения редукционной переменной:
RV_BW: [<тип переменной >] < имя переменной >; {< файл>, <строка >}

§ Запись нового значения редукционной переменной:
RV_AW: [<тип переменной>] <имя переменной> = <значение>; {<файл>, <строка>}

§ Результат вычисления редукции:
RV: [<тип переменной >] <значение>; {< файл>, <строка >}

§ Завершение блока собственных вычислений в последовательной части программы:
SKP: {< файл>, <строка >}

§ Начало параллельного цикла:
PL: <номер конструкции> (<номер объемлющей конструкции>) [<ранг цикла>] ; {<файл>, <строка>}

§ Начало последовательного цикла:
SL: <номер конструкции> (<номер объемлющей конструкции>) [<ранг цикла (всегда равен единице)>] ; {<файл>, <строка>}

§ Начало области параллельных задач:
TR: <номер конструкции> (<номер объемлющей конструкции>) [<ранг области (всегда равен единице)>] ; {<файл>, <строка>}

§ Начало витка или параллельной задачи:
IT: <абсолютный индекс витка (вычисляется из значений всех индексных переменных цикла) или номер задачи>, (<значение индексной переменной 1>,< значение индексной переменной 2>,…).

§ Завершение параллельного или последовательного цикла или области задач:
EL: <номер конструкции>; {<файл>, <строка>}

Эти записи определяют динамическую структуру программы, то есть последовательность операторов в процессе выполнения программы.

Приложение 3

Команды DVM-системы, используемые оболочкой при функциональной отладке

1. Команда получения отладочного последовательного варианта DVM-программ (с подключением динамического отладчика для сбора эталонной трассировки).

dvm csdeb [<опции C-DVM конвертора>] <имя_C-DVM-программы>

Результат работы: готовая программа (выполняемый файл <имя_DVM-программы>_s).

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

dvm cpdeb [<опции C-DVM конвертора>] <имя_C-DVM-программы>

Результат работы: готовая программа (выполняемый файл <имя_DVM-программы>_p).

3. Команда запуска отладочного параллельного варианта DVM-программ, осуществляющего динамический контроль DVM-указаний.

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

Результат работы: ошибки, обнаруженные в DVM-указаниях (при их наличии).

4. Команда запуска отладочного последовательного варианта DVM-программ, осуществляющая накопление эталонной трассировки на одном процессоре.

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

Результат работы: файл с накопленной трассировкой или при наличии ошибок сбора трассировки - сообщения об ошибках.

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

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

Результат работы: ошибки, обнаруженные в процессе сравнения трассировок (при их наличии).

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

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

Результат работы: ошибки, обнаруженные в процессе сравнения трассировок (при их наличии).

7. Команда запуска отладочного параллельного варианта DVM-программ, осуществляющая накопление трассировки на нескольких процессорах.

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

Результат работы: файлы с накопленной трассировкой или при наличии ошибок сбора трассировки - сообщения об ошибках.

8. Команда запуска DVM-программы, осуществляющая накопление трассировки для предиктора.

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

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

9. Команды комплексного прогона одной программы последовательно через все шаги отладки.

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

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

Приложение 4

Пример преобразования системной трассировки

Фрагмент системной трассировки

RTS VERSION = 2841

syspar file version = 2841 (min vers = 2841)

sysdebug file version = 2841 (min vers = 2841)

systrace file version = 2841 (min vers = 2841)

trcevent file version = 2841 (min vers = 2841)

usrdebug file version = 2841 (min vers = 2841)

statist file version = 2841 (min vers = 2841)

ProcCount=1; PSRank=3; PSSize= 1 1 1;

VProcCount=0;

MasterProc=0(0); IOProc=0(0); CentralProc=0(0); MeanProcPower=0.016001;

IntProcNumber ExtProcNumber ProcIdent ProcWeight

0 0 0 1.00

CoordWeight[0]= 1.00(1.00)

CoordWeight[1]= 1.00(1.00)

CoordWeight[2]= 1.00(1.00)

MaxMsgLength MsgBufLength MsgBuf1Length MaxMsgSendNumber ChanNumber Dupl

0 0 0 0 0 0

0

MPS=MPI; Non-standard run;

Tm=0.000000 Tirecv=0.000001 Twrecv=0.000001

ret_dvm_Init TIME=0.23400000 LINE=25 FILE=jac1.cdv

call_getam_ TIME=0.00000100 LINE=20 FILE=jac1.cdv

ret_getam_ TIME=0.00000100 LINE=20 FILE=jac1.cdv

AMRef=573be0;

call_crtamv_ TIME=0.00000100 LINE=20 FILE=jac1.cdv

AMRefPtr=567a60; AMRef=573be0; Rank=2; StaticSign=0;

SizeArray[0]=25; SizeArray[1]=25;

ret_crtamv_ TIME=0.00000100 LINE=20 FILE=jac1.cdv

AMViewRef=a32320;

call_distr_ TIME=0.00000100 LINE=20 FILE=jac1.cdv

AMViewRefPtr=5678c4; AMViewRef=a32320; PSRefPtr=NULL; PSRef=0; ParamCount=2;

AxisArray[0]=1; AxisArray[1]=2;

DistrParamArray[0]=0; DistrParamArray[1]=0;

ret_distr_ TIME=0.00000100 LINE=20 FILE=jac1.cdv

IsLocal=1;

call_crtda_ TIME=0.00000100 LINE=20 FILE=jac1.cdv

ArrayHeader=566e88; ExtHdrSign=0; BasePtr=0; Rank=2; TypeSize=8; StaticSign=0; ReDistrSign=3;

SizeArray[0]=25; SizeArray[1]=25;

LowShdWidthArray[0]=1; LowShdWidthArray[1]=1;

HiShdWidthArray[0]=1; HiShdWidthArray[1]=1;

ret_crtda_ TIME=0.00000100 LINE=20 FILE=jac1.cdv

ArrayHandlePtr=a33e00;

call_align_ TIME=0.00000100 LINE=20 FILE=jac1.cdv

ArrayHeader=566e88; ArrayHandlePtr=a33e00; PatternRefPtr=5678c4; PatternRef=a32320 (AMView);

AxisArray[0]=1; AxisArray[1]=2;

CoeffArray[0]=1; CoeffArray[1]=1;

ConstArray[0]=0; ConstArray[1]=0;

DArr->ArrBlock.ALoc.Ptr0=f41fa0 DArr->ArrBlock.ALoc.Ptr=f41fa0 Size=5016

ret_align_ TIME=0.00000100 LINE=20 FILE=jac1.cdv

IsLocal=1

call_crtda_ TIME=0.00000100 LINE=21 FILE=jac1.cdv

ArrayHeader=566e94; ExtHdrSign=0; BasePtr=0; Rank=2; TypeSize=8; StaticSign=0; ReDistrSign=2;

SizeArray[0]=25; SizeArray[1]=25;

LowShdWidthArray[0]=1; LowShdWidthArray[1]=1;

HiShdWidthArray[0]=1; HiShdWidthArray[1]=1;

ret_crtda_ TIME=0.00000100 LINE=21 FILE=jac1.cdv

ArrayHandlePtr=a334c0;

call_align_ TIME=0.00000100 LINE=21 FILE=jac1.cdv

ArrayHeader=566e94; ArrayHandlePtr=a334c0; PatternRefPtr=566e88; PatternRef=a33e00 (DisArray);

AxisArray[0]=1; AxisArray[1]=2;

CoeffArray[0]=1; CoeffArray[1]=1;

ConstArray[0]=0; ConstArray[1]=0;

DArr->ArrBlock.ALoc.Ptr0=f43348 DArr->ArrBlock.ALoc.Ptr=f43348 Size=5016

ret_align_ TIME=0.00000100 LINE=21 FILE=jac1.cdv

IsLocal=1

call_dvm_void_printf TIME=0.00000100 LINE=21 FILE=jac1.cdv

Format=JAC1 STARTED

ret_dvm_void_printf TIME=0.01500100 LINE=21 FILE=jac1.cdv

call_crtpl_ TIME=0.00000100 LINE=29 FILE=jac1.cdv

Rank=2;

ret_crtpl_ TIME=0.00000100 LINE=29 FILE=jac1.cdv

LoopRef=a33080;

call_mappl_ TIME=0.00000100 LINE=29 FILE=jac1.cdv

LoopRefPtr=12ff24; LoopRef=a33080; PatternRefPtr=566e88; PatternRef=a33e00 (DisArray);

AxisArray[0]=1; AxisArray[1]=2;

CoeffArray[0]=1; CoeffArray[1]=1;

ConstArray[0]=0; ConstArray[1]=0;

LoopVarAddrArray[0]=0; LoopVarAddrArray[1]=0;

LoopVarTypeArray[0]=1; LoopVarTypeArray[1]=1;

InInitIndexArray[0]=0; InInitIndexArray[1]=0;

InLastIndexArray[0]=24; InLastIndexArray[1]=24;

InStepArray[0]=1; InStepArray[1]=1;

ret_mappl_ TIME=0.01600100 LINE=29 FILE=jac1.cdv

Фрагмент преобразованной трассировки

dvm_Init TIME=0.23400000 LINE=25 FILE=jac1.cdv

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

getam_ TIME=0.00000100 LINE=20 FILE=jac1.cdv

Опрос ссылки на текущую абстрактную машину...

crtamv_ TIME=0.00000100 LINE=20 FILE=jac1.cdv

Создание представления абстрактной машины...

distr_ TIME=0.00000100 LINE=20 FILE=jac1.cdv

Распределение ресурсов между процессорами...

crtda_ TIME=0.00000100 LINE=20 FILE=jac1.cdv

Выделение памяти для элементов распределённого массива...

align_ TIME=0.00000100 LINE=20 FILE=jac1.cdv

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

crtda_ TIME=0.00000100 LINE=21 FILE=jac1.cdv

Выделение памяти для элементов распределённого массива...

align_ TIME=0.00000100 LINE=21 FILE=jac1.cdv

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

dvm_void_printf TIME=0.01500100 LINE=21 FILE=jac1.cdv

Печать в стандартный выходной поток...

crtpl_ TIME=0.00000100 LINE=29 FILE=jac1.cdv

Создание параллельного цикла, определение его начала...

mappl_ TIME=0.01600100 LINE=29 FILE=jac1.cdv

Отображение витков параллельного цикла на процессоры...


Подобные документы

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

    дипломная работа [767,2 K], добавлен 14.10.2010

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

    курсовая работа [29,2 K], добавлен 28.11.2010

  • Отладка - процесс обнаружения, устранения синтаксических и семантических ошибок. Точки отслеживания (трассировки). Выполнение отладки в режиме останова. Мониторинг содержимого переменных. Пошаговое выполнение кода. Разработка тестов для отладки программы.

    презентация [743,6 K], добавлен 09.12.2013

  • Модели параллельного программирования; отладка параллельных программ. Реализация экспериментальной версии системы сравнительной отладки Fortran-OpenMP программ: получение, сбор и запись трассы, инструментарий программ, используемый формат файлов трассы.

    дипломная работа [92,8 K], добавлен 17.10.2013

  • Основные виды загрузки. Приемы работы в ТР: процесс отладки. Команды редактирования отладки программ с помощью командного меню Pascal. Составление программы с использованием простых операторов ввода, вывода. Сравнения с текстовыми и числовыми условиями.

    отчет по практике [134,7 K], добавлен 02.09.2010

  • Средства интегрированной среды Microsoft Visual Studio, предоставляемые программисту для реализации программ на языке С++. Особенности стиля написания программ. Типовые приемы и методы создания и отладки программ. Листинги программ и их тестирование.

    лабораторная работа [814,3 K], добавлен 26.05.2013

  • Решение задач прикладного программирования. Оформление разработанных алгоритмов в виде графических схем. Написание программ с использованием подпрограмм, их отладка. Блок-схемы и листинг программ. Наборы тестов для отладки разработанных программ.

    курсовая работа [575,8 K], добавлен 06.12.2013

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

    курсовая работа [303,4 K], добавлен 19.01.2016

  • Основные направления развития параллелизма, модели параллельного программирования. Автоматические средства разработки параллельного ПО, анализ последовательной программы. Разработка системы автоматического распараллеливания программ на языке Fortran77.

    дипломная работа [57,7 K], добавлен 14.10.2010

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

    курсовая работа [1,1 M], добавлен 22.11.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.