DisCollection.ru

Авторефераты и темы диссертаций

Поступления 13.02.2008

Материалы

загрузка...

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

Бугеря Александр Борисович, 13.02.2008

 

Бугеря Александр Борисович

Диалоговая отладка параллельных программ:

распределенная схема взаимодействующих компонентов

Специальность 05.13.11 – математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей

Автореферат

диссертации на соискание ученой степени

кандидата физико-математических наук

Москва – 2008 год

Работа выполнена в Институте прикладной математики

им. М.В. Келдыша РАН.

Научный руководитель: доктор физико-математических наук

Андрианов Александр Николаевич

Официальные оппоненты: доктор физико-математических наук

Якобовский Михаил Владимирович,

кандидат физико-математических наук

Косачев Александр Сергеевич

Ведущая организация: Научно-исследовательский вычислительный центр МГУ

имени М.В.Ломоносова

Защита состоится 02 декабря 2008 г. в 11 часов на заседании диссертационного совета Д 002.024.01 в Институте прикладной математики им. М.В. Келдыша РАН по адресу: 125047, Москва, Миусская пл., 4.

С диссертацией можно ознакомиться в библиотеке Института прикладной математики им. М.В. Келдыша РАН.

Автореферат разослан октября 2008 г.

Ученый секретарь диссертационного совета,

Т.А. Полилова

Общая характеристика работы

Объект исследования и актуальность темы

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

Одновременно с возрастанием потребности в параллельных программах и с распространением многопроцессорных, многоядерных и кластерных технологий разработка параллельных программ становится все более актуальной, поскольку пользователи программ хотят максимально полно использовать возможности имеющейся у них современной вычислительной аппаратуры. Высокая сложность разработки параллельных программ, часто не позволяющая эффективно использовать возможности высокопроизводительных компьютеров, является общепризнанным фактом. В настоящее время ведутся интенсивные исследования в области автоматизации разработки параллельных программ, в частности, в области создания инструментов для отладки и исследования параллельных программ. Цели применения этих инструментов могут быть самыми различными. Это, в первую очередь, поиск ошибок в программе, в том числе и таких специфических для параллельных программ, как ошибки обращения к процедурам, обеспечивающим параллелизм, ошибки при передаче сообщений, ошибки синхронизации, ошибки доступа к общим ресурсам и т.д. Но и затем, после того как программа начала работать, и работать правильно, отладка программы обычно не заканчивается. Сразу возникает вопрос: а насколько эффективно она работает? Равномерно ли распределена вычислительная нагрузка между компонентами параллельной программы? Для того, чтобы ответить на эти и другие подобные вопросы, применяют специальные инструменты исследования параллельных программ.

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

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

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

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

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

Цели и задачи работы

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

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

На основе созданного программного комплекса были поставлены задачи разработать:

Диалоговый отладчик программ, написанных на декларативном непроцедурном языке НОРМА, с поддержкой отладки внешних модулей, написанных на Фортране MPI.

Диалоговый отладчик программ, написанных на Фортране MPI.

Диалоговый интерфейс для системы исследования MPI-программ.

Научная новизна работы