Диалоговая оболочка для отладки 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