5.10.Окно конкретных ошибок (Errors list)
Информация об ошибках представляется в виде текстовой таблицы, содержащей для каждой ошибки строку (Рис 5):
<�название типа ошибки> <�список ссылок (времен) ошибочных событий в трассе >
Рис 5. Окно Errors list.
В строке таблицы с конкретными ошибками содержится упорядоченный по времени (в рамках строки) список ошибок данного типа. Значение элемента списка – время возникновения ошибки. Все строки упорядочены по временам их первых (самых ранних) ошибок.
В списке ссылок (времен) могут быть помечены один или несколько элементов и осуществлен переход к другим окнам, представляющим дополнительную информацию о конкретной ошибке. Для этой цели используются кнопки Show Errors, Show Event Line, Show Comments.
1.1. При нажатии кнопки Show Comments открывается дополнительное окно Comments (Рис 6), в котором приводится текст комментария об ошибке. Комментарий формируется отладчиком и предоставляется визуализатору при помощи интерфейса.
Рис 6. Окно Comments.
1.2. При нажатии кнопки Show Event Line осуществляется открытие окна событий Event line. Окно Event line должно открываться со сдвигом к первому отмеченному в списке конкретных ошибок событию (первому по времени событию, если указано несколько).
При нажатии кнопки Show Event Line визуализатору требуется доступ к трассам.
1.3. При нажатии кнопки Show Errors осуществляется открытие окна (окон) трасс (Trace control) и показывается соответствующее событие (строка) трассы, а также для каждого события трассы открывается окно (окна) стека и исходного текста (Text control) программы. Для ошибочного события каждой трассы показывается соответствующее окно с ошибочной строкой программы. Для одной отмеченной в окне Errors list ошибки могут показываться трассы нескольких процессоров, если ошибочная ситуация связана с несколькими процессорами.
При нажатии кнопки Show Errors визуализатору требуется доступ к трассам.
5.11.Окно событий (Event line)
Другая форма визуализации ошибок – окно Event line, в котором графически представлены события программы по процессорам с выделением ошибочных событий.
В этом окне для каждого процессора представлены в виде линеек окрашенных простейших геометрических фигур события трассы, упорядоченные по времени. Для каждого процессора изображается своя линейка. Таким образом, информация в этом окне – двумерный графический объект с координатами (номер процессора, время события).
Изображения событий “синхронизируются” (выравниваются слева) по коллективным операциям – у этих событий в линейках разных процессоров одинаковые координаты “время события”. Ошибочные события окрашиваются в различные оттенки красного, с учетом типа зафиксированной ошибки. Остальные события окрашиваются цветами, отличными от красного, чтобы упростить понимание типа операции (Рис 7).
Рис 7. Окно Event line.
Управление внутри окна: масштабирование, прокрутка горизонтальная и вертикальная. Вывод при наведении курсора на событие текстового комментария про это событие (диагностика ошибки, время в трассе для правильных событий).
Масштабирование осуществляется при помощи панели инструментов, возможно масштабирование сразу по двум измерениям и по каждому в отдельности, с заданием коэффициента растяжения (сжатия).
Навигация между окнами:
при двойном “нажатии” кнопкой мыши на изображенное событие –переход к окну Trace control, причем в списке событий трассы текущим выделено событие, соответствующее нажатому изображению.
5.12.Окно просмотра стека и исходных текстов (Text control)
Окно показа стека и текстов разделяется на две части: просмотр стека (Stack view) и просмотр текса (Source view).
В окне Stack view представлен стек вызовов в виде списка строк формата
<�номер> <�имя файла> <�стока кода> <�наличие файла> (Рис 8),
где <�имя файла> - имя исходного файла, <�строка кода> - номер строки в исходном тексте, помогающий локализовать ошибку, <�наличие файла> - указание существования файла (файл может не существовать). Последний вызов расположен под первым номером, первый вызов стоит последним в списке.
Рис 8. Окно Text control.
Второе окно Source view отображает исходные тексты программы, и представляет собой набор закладок (Tab pane), где каждому файлу соответствует одна закладка.
Управление:
При выборе строки в окне стека, в окне Source view отображается исходный текст соответствующий данному вызову.
Возможен выбор режимов просмотра, через меню Actions:
Показать/спрятать стек
Показать/спрятать исходный код
Показать строку кода (прокрутить окно исходного текста к выделенной строке)
5.13.Окно просмотра трасс (Trace control)
Окно Trace control состоит из двух частей (окон): окно трассы Trace view и окно Text control (Рис 9).
В окне Trace view представляются в текстовом виде события трассы, упорядоченные по времени. События, определенные отладчиком как ошибочные, имеют соответствующие пометки в поле признака ошибки, а также снабжаются текстовыми сообщениями об ошибках.
Каждому событию соответствует срока формата
<�номер события> <�вызов/возврат> <�имя функции> <�время события> <�имя файла> <�ссылка на исходные коды> <�признак ошибки> <�название ошибки> <�текст ошибки>
Где <�вызов/возврата>- признак вызова или возврата из функции
<�ссылка на исходные коды> - ссылка на текст программы, где происходит обращение к функции или возврат из нее
<�признак ошибки> - может отсутствовать, либо указывать на наличие ошибки или предупреждения
Каждому событию соответствует ссылка на исходные коды или неопределенная ссылка. При смене строки в окне Trace view обновляется содержимое окна Text control, в нем выводится стек и исходные тексты, соответствующие ссылке в текущем событии из окна Trace view.
Рис 9. Окно Trace control.
Управление:
В окне Trace control через меню Actions возможны следующие действия:
Полный/сокращенный просмотр стека. Установка (снятие) данного режима позволяет показывать (прятать) окно Stack view в окне Text control. При отключении стека показывается последнее событие в стеке вызовов, а точнее исходный текст, соответствующий этому событию.
Показать/спрятать окно Stack control. Позволяет показать (спрятать) окно Stack control. При отключении показа окна Stack control ускоряется навигация по списку событий, пользователь может включить показ исходных кодов только для интересующего его события.
Показать/спрятать окно Trace view. Позволяет пользователю подробнее рассмотреть интересующие его исходные коды.
Найти первую ошибку. Находит в списке событий первое событие с признаком ошибки и делает его текущим.
Найти первую ошибку или предупреждение. Находит в списке событий первое событие с признаком ошибки или предупреждения и делает его текущим.
Найти следующую ошибку. Находит следующее событие с признаком ошибки и делает его текущим.
Найти следующую ошибку или предупреждение. Находит следующее событие с признаком ошибки или предупреждения и делает его текущим.
Некоторым событиям может соответствовать ссылка на другое событие (например, последовательность событий, приводящая к ошибке типа deadlock). При двойном щелчке мышью на этом событии, вызывается окно Trace control, в котором отображаются события на процессоре, на котором произошло следующее событие. Причем, текущим становится событие, следующее в последовательности.
6.Заключение
В ходе работы были изучены модели параллельного программирования, методики и средства отладки параллельных программ, методики создания пользовательского интерфейса. Изучена графическая библиотека Qt [13], которая была выбрана как база для реализации из-за того, что она обеспечивает работу приложения в двух операционных средах – UNIX и Windows. Изучено программное средство Qt Designer. Проанализированы вопросы визуализации отладочной информации, способов точной локализации и представления ошибок.
Была разработана, спроектирована и реализована диалоговая оболочка MPI-отладчика. Язык реализации C++ (объем программы 12700 сток), платформа Linux, графическая библиотека Qt 3.2. Определен набор функций, необходимый для быстрой и точной локализации ошибок. Предложены новые способы визуализации трассировки, например Event line (сравните с Time line, используемой в большинстве существующих средств отладки). Реализован пользовательский интерфейс, который был опробирован при отработке MPI-отладчика на тестах и реальных приложениях.
В дальнейшем возможно улучшение пользовательского интерфейса, добавление новых меню и панелей инструментов. Планируется добавление в MPI-отладчик и его диалоговую оболочку средств анализа эффективности выполнения программы. Также планируется перенос MPI-отладчика на платформу Windows, что возможно осуществить, благодаря использованию кросс-платформенной библиотеки Qt.
7.Литература
Высокопроизводительные параллельные вычисления на кластерных системах. Материалы Международного научно-практического семинара./Под ред. проф. Стронгина. Нижний Новгород: Изд-во Нижегородского Университета, 2002, 217 с. Статья Крюкова В. А. «Разработка параллельных программ для вычислительных кластеров и сетей. Проблемы и перспективы».
-
MPI: A Message-Passing Interface Standard. http://www.mpi-forum.org/docs /docs.html
High Performance Fortran language specification // High Performance Fortran Forum. Scientific Programming. – 1993. – Vol. 2. – Р.1-170.
OpenMP Consortium. http://www.openmp.org
Документация к системе DVM. http://www.keldysh.ru/pages/dvm
NASA http://science.nas.nasa.gov/Software/AIMS/manual
Максим Филамофитский Лаборатория параллельных информационных технологий, НИВЦ МГУ, «Средства анализа производительности параллельных приложений»
Крюков В.А., Удовиченко Р.В., Отладка DVM-программ. – М.: Препринт ИПМ им. М.В. Келдыша РАН, - http://www.keldysh.ru/dvm
Описание программных средств отладки Vampir и VampirTrace http://www.pallas.com/e/products/vampir
Гибсон Ф. "Экологический подход к психологии восприятия"
Донской М. Пользовательский интерфейс. PC Magazine – Russian Edition © СК Пресс.
Parallel Relative Debugging for Distributed Memory Applications. Gregory R. Watson and David Abramson. School of Computer Science and Software Engineering Monash University.
Qt library documentation http://www.trolltech.com
High Performance Cluster Computing: Architectures and Systems, Vol. 1. Edited by Rajkumar Buyya. School of Computer Science and Software Engineering Monash University.
Solaris 7 Software Developer Collection. Multithreaded Programming Guide. Tools for Enhancing MT Programs. http://docs.sun.com/db/doc/805-5080/6 j4q7emhk?q=Locklint&a=view
Isolating Failure-Inducing Thread Schedules. International Symposium on Software Testing and Analysis (ISSTA2002), Via di Ripetta, Rome Italy, July 22-24, 2002. http://www.research.ibm.com/dejavu/choi-zeller.pdf
|