автореферат диссертации по информатике, вычислительной технике и управлению, 05.13.11, диссертация на тему:Диалоговая отладка параллельных программ

кандидата физико-математических наук
Бугеря, Александр Борисович
город
Москва
год
2008
специальность ВАК РФ
05.13.11
Диссертация по информатике, вычислительной технике и управлению на тему «Диалоговая отладка параллельных программ»

Автореферат диссертации по теме "Диалоговая отладка параллельных программ"

На правах рукописи

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

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

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

Автореферат диссертации на соискание ученой степени кандидата физико-математических наук

Москва - 2008 год

003452850

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

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

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

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

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

кандидат физико-математических наук Косачев Александр Сергеевич

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

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

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

Автореферат разослан 2 8 октября 2008 г. Ученый секретарь диссертационного совета,

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

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

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

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

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

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

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

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

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

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

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

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

Цели:

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

отладки и исследования параллельных программ в диалоговом режиме.

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

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

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

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

• Диалоговый интерфейс для системы исследования MPI-программ. Научная новизна работы

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

• Разработан диалоговый отладчик для непроцедурного языка (на примере языка НОРМА).

Практическая значимость

Диалоговый отладчик программ, написанных на языке НОРМА, с поддержкой отладки внешних модулей, написанных на Фортране MPI и отладчик программ, написанных на Фортране MPI, могут быть использованы для отладки прикладных программ на соответствующих языках. Отладчики были апробированы на ряде вычислительных систем: кластерах МВС-15000ВМ, MBC-6000IM Межведомственного суперкомпьютерного центра РАН и находятся в опытной эксплуатации на кластере FIRE Института прикладной математики им. М.В. Келдыша РАН. Отладчики доступны для использования всем желающим в составе системы НОРМА.

Диалоговый интерфейс для системы исследования MPI-программ может быть использован для исследования и отладки MPI-программ в DVM-системе.

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

Апробация работы и публикации

Основные результаты диссертации были доложены на российских и международных научных конференциях и опубликованы в трудах этих

конференций [1, 2, 3, 4, 5, 6]. Имеется одна публикация [7] в журнале из перечня ВАК.

Структура и объем работы

Диссертация состоит из введения, пяти глав, заключения и списка литературы (27 наименований). Общий объем работы составляет 79 страниц, работа содержит 9 иллюстраций.

Содержание работы

Введение

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

Глава 1. Известные подходы к отладке и исследованию параллельных программ

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

Известные подходы к отладке и исследованию параллельных программ можно разделить на три основных направления: автоматический контроль корректности выполнения программы, сравнительная отладка (сравнение выполнения программы при ее различных запусках) и диалоговая отладка. Автоматический контроль корректности и сравнительная отладка могут осуществляться либо посредством анализа трасс, собранных при выполнении параллельной программы, либо без использования трасс - динамически в процессе реального времени выполнения параллельной программы. Диалоговая отладка обычно осуществляется в процессе реального выполнения параллельной программы посредством задания точек останова, пошагового выполнения программы и инспектирования значений указанных переменных.

Традиционные подходы к отладке и исследованию параллельных программ.

Отладочные печати

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

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

Диалоговая отладка

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

При диалоговой отладке с помощью предоставленных отладчиком средств и инструментов пользователь определяет в программе одну или несколько контролируемых точек. Такими точками могут выступать точки останова (breakpoints) или точки наблюдения (watchpoints). Пользователь даёт команду на начало или продолжение выполнения программы, и выполнение программы прерывается в первой достигнутой точке контроля. Возможен и широко используется также и пошаговый режим выполнения программы.

Далее, пользователь анализирует состояние программы на момент останова. В этот момент он может проинспектировать значения переменных, посмотреть стек и параметры вызовов подпрограмм и воспользоваться всеми прочими средствами и инструментами, которые предоставляет ему конкретный отладчик. Если состояние программы корректно, пользователь продолжает её выполнение до следующей точки контроля, при этом имеется возможность оперативно скорректировать дальнейший ход отладки (поставить дополнительные точки останова, просмотреть значения еще каких-либо переменных и т.п.). Либо, если состояние программы уже некорректно, пользователь определяет дополнительные контролируемые точки и производит перезапуск программы с целью отследить оператор или группу операторов, приводящих программу к некорректному состоянию.

Автоматизированные подходы к отладке и исследованию параллельных программ.

Автоматический контроль корректности

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

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

Сравнительная отладка

В тех случаях, когда у пользователя есть две версии программы, одна из которых работает верно (эталонная), а другая - нет (отлаживаемая), работающую версию можно принять как формальную спецификацию неработающей. Идея сравнительной отладки как раз и заключается в сравнении работы двух версий одной и той же программы, и при этом сравниваются значения переменных в определенных контролируемых точках выполнения программ. Данные для сравнения можно брать как динамически из выполняющихся программ, так и из трасс, полученных при их выполнении.

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

Сравнение различных подходов к отладке и исследованию параллельных программ.

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

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

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

Инструментация программ.

Надо заметить, что все без исключения подходы к отладке и исследованию программ основаны на изменении самой программы. Только с помощью вставки дополнительных операторов, предназначенных для получения отладочной информации, отладчик может получить какую-либо информацию о программе. Это может быть достигнуто путём подмены системных библиотек или библиотек, обеспечивающих параллелизм, на свои библиотеки, которые обеспечивают отладчику получение необходимой информации, а затем вызывают соответствующие заменённые библиотечные функции. Заметим, что при этом остановка и получение информации для отладки возможна не в произвольной точке программы, а только в точках входа и выхода функций заменённой библиотеки. Или это может быть инструментация программ - добавление непосредственно в саму программу дополнительных операторов. Операторы могут быть добавлены в исходный текст программы, что потребует перекомпиляции, либо в её объектный код. Добавление и удаление операторов в объектном коде может производиться динамически, в процессе выполнения программы.

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

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

Глава 2. Общая схема распределенного комплекса

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

Выполнение параллельных программ чаще всего производится на специализированных вычислительных установках - кластерах или многопроцессорных системах с общей памятью. Доступ к таким вычислительным установкам обычно организуется по сети через хост-машину. Выполняется программа на специально для этого предназначенных вычислительных узлах.

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

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

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

При построении распределенного программного комплекса для отладки и исследования удалённо выполняющихся параллельных программ предлагается применить следующую схему распределённых компонентов и взаимодействий между ними (см. рис.1).

Рис. 1. Общая схема распределенного комплекса.

1. Пользовательский интерфейс.

2. Монитор.

3. Модули сбора информации.

В п. 2.1 - 2.3 основные компоненты схемы рассматриваются более подробно.

2.1. Пользовательский интерфейс

На пользовательском компьютере выполняется Пользовательский интерфейс (1). Это программа с удобным графическим интерфейсом, выполненная в стиле Microsoft Visual Studio, демонстрирующая ход выполнения отлаживаемой программы или результаты исследования

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

Пользовательский интерфейс оперирует общими понятиями: "показать исходный код: файл такой-то строка такая-то", "достигнута точка останова процессом таким-то в таком-то месте исходного кода" и т.п. Команды, выполнение которых реализовано в Пользовательском интерфейсе, также не зависят от типа отлаживаемой программы, а зависят только от текущего состояния программы (выполняется, приостановлена) и делятся по назначению на типичные для последовательных отладчиков (запустить, приостановить, сделать шаг, показать значение выражения, установить точку останова и т.п.), специфичные для параллельных программ (показать состояние процессов, запустить или сделать шаг для выбранной группы процессов, показ переменных в отдельных процессах и т.п.), а также команды системы исследования МР1-программ (запустить анализатор, показать результат его работы, показать фрагмент трассы и т.п.).

2.2. Монитор

Это основная программа в составе комплекса, она отвечает за установку связи между всеми компонентами комплекса и управляет выполнением отлаживаемой программы или запуском средств её исследования. Монитор также изначально не имеет никакой информации о работающей программе, а получает её от параллельно выполняющихся процессов (экземпляров) отлаживаемой программы или от инструментов исследования программы. Затем, в зависимости от типа (Норма или Фортран) отлаживаемой программы, или от рода деятельности (отладка или исследование по трассам), Монитор входит в один из заранее предопределенных режимов работы, в котором он принимает поступившие от отлаживаемых процессов (или от инструмента исследования программ) и от Пользовательского интерфейса сообщения, обрабатывает их, и посылает сообщения в ответ. Таким образом, Монитор уже оказывается зависим от типа отлаживаемой программы, и даже одни и те же примитивы при отладке различных типов программ обрабатываются по-разному. Кроме того, в Монитор заложена и другая языково-зависимая информация, например, о способе распределения данных в НОРМА-программе, с учетом которой Монитор производит вычисления значений выражений.

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

2.3. Модули сбора информации

Данные модули отвечают за непосредственный сбор информации об отлаживаемом процессе или исследуемой программе. В зависимости от вида поставленной задачи, Модули сбора информации могут быть выполнены по-разному. Если информация собирается непосредственно во время выполнения программы, то это должна быть библиотека функций, прилинкованная к выполняемой программе. Функции этой библиотеки вызываются непосредственно из каждого процесса отлаживаемой программы. В случае когда программа анализируется по предварительно собранным трассам, Модули сбора информации представляют собой отдельную программу, производящую анализ. В обоих случаях перед началом своей работы Модули сбора информации устанавливают соединение с Монитором и сообщают ему информацию о себе, своём типе и характеристиках отлаживаемого процесса или объектов исследования. Затем, в случае сбора информации непосредственно во время выполнения программы, при наступлении различных событий (выполнение процессом определенного оператора, вызов функции и т.п.), Модули сбора информации могут сообщать об этом Монитору, и ждать от него указаний и различных запросов. При этом выполнение исследуемой программы приостанавливается. Затем, по указанию монитора, выполнение приостановленной программы возобновляется.

2.4. Программный комплекс

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

Глава 3. Отладчик параллельных программ на языке НОРМА с поддержкой Фортрана MPI. Отладчик параллельных программ на языке Фортран MPI

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

В п. 3.1 сформулирована постановка задачи - отладка программ, написанных на непроцедурном языке.

Непроцедурный язык Норма предназначен для автоматизации решения сеточных задач на вычислительных комплексах с параллельной архитектурой. Этот язык позволяет исключить фазу программирования, которая необходима при переходе от расчетных формул, заданных прикладным специалистом, к программе. Расчетные формулы записываются на языке Норма в математическом, привычном для прикладного специалиста виде, затем компилятор языка НОРМА генерирует программу на «традиционном» языке

программирования - Фортране или Си. Порядок выполнения расчётов для формул определяется компилятором. При генерации может быть построена как последовательная, так и параллельная программа с использованием одной из поддерживаемых библиотек параллелизма - MPI, PVM или DVM. В дальнейшем в данной работе будет рассматриваться только версия MPI, как наиболее используемая и распространённая по сравнению с другими версиями.

При построении выходной параллельной программы в модели передачи сообщений для параллельных систем с распределенной архитектурой компилятор автоматически по программе на Норме определяет структуру выходной программы, распределяет данные и их обработку по заданному числу виртуальных процессоров, генерирует операторы счета, управления вычислением, передачи данных между параллельно выполняющимися процессами. Сгенерированная программа также может вызывать подпрограммы и функции, написанные на Фортране или Си пользователем самостоятельно (так называемые "внешние" модули). При выполнении программ на языке НОРМА фактически выполняются автоматически сгенерированные компилятором параллельные программы на языке Фортран MPI или Си MPI. Предлагать прикладному специалисту, составившему программу на языке НОРМА, отлаживать ее путем отладки параллельной сгенерированной незнакомой программы на другом уже языке было бы, видимо, неправильно. Отладка программ на языке НОРМА на уровне исходного кода и в терминах языка НОРМА выглядит гораздо более предпочтительной.

Таким образом, основную задачу отладки программ на языке НОРМА можно сформулировать следующим образом: реализовать возможность диалоговой отладки декларативных спецификаций на языке НОРМА в терминах языка НОРМА, несмотря на то, что реально выполняется сгенерированная параллельная программа на языке Фортран MPI или Си MPI.

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

В п. 3.2 предложенная во второй главе общая схема распределенных компонентов применена для создания отладчиков программ на языке Норма с поддержкой Фортрана MPI и программ на языке Фортран MPI. В схему дополнительно введён один новый элемент - модуль генерации отладочной информации. Он необходим для того, чтобы отлаживаемая программа во время выполнения обладала необходимой для отладки информацией о себе и могла предоставить её Модулю сбора информации.

Транслятор с языка НОРМА при генерации выполняемых параллельных программ также генерирует для отладчика всю необходимую информацию о произведённом преобразовании операторов языка НОРМА в операторы языка Фортран или Си, о произведенном распараллеливании, о распределении данных по процессам и т.п. Все эти данные передаются Модулю сбора информации, который выполнен в виде библиотеки функций (эта библиотека была названа

Библиотекой связи с Монитором), путем генерации в выполняемой программе вызовов этих библиотечных функций. При этом вся необходимая информация передаётся через фактические параметры вызовов функций.

В п. 3.3 приводится схема генерации отладочной информации.

3.3.1. Генерация начала/конца блоков

В начале программы после вызова МР1_1пк(...) вставляется вызов функции из Библиотеки связи с Монитором, которая фиксирует начало выполнения программы. В качестве параметров ей передаются: имя главного раздела программы; имя файла с исходным текстом программы и его контрольная сумма, высчитанная при трансляции; номер строки в файле, с которой начинается главный раздел программы. Выход из функции МР1_1пк(...) означает, что все необходимые МР1-экземпляры данной программы запущены и проинициализированы, между ними установлены соединения. Можно начинать отладку.

В конце программы перед вызовом МР1_РшаНге(...) вставляется вызов функции из Библиотеки связи с Монитором, которая фиксирует, что выполнение программы завершается.

Точно также, при генерации каждой функции Фортран или Си программы, соответствующей какому-то разделу исходной НОРМА-программы, в начало генерируемой функции первым исполняемым оператором вставляется вызов функции Библиотеки связи с Монитором, фиксирующей начало раздела. Для распределённых разделов дополнительно передаётся информация о произведённом распределении данных по процессам. В конце каждой функции последним исполняемым оператором вставляется вызов функции Библиотеки связи с Монитором, фиксирующей конец раздела.

3.3.2. Генерация начала выполнения оператора

Перед каждым оператором в сгенерированной программе, если он является первым оператором в группе операторов, реализующих определённую конструкцию исходной НОРМА-программы, вставляется вызов функции Библиотеки связи с Монитором, фиксирующей начало выполнения конструкции исходной НОРМА-программы. При этом передаётся информация о номере строки в исходном файле, с которой начинается и заканчивается конструкция исходной НОРМА-программы. На основе этой информации отладчик определяет факт достижения точки останова и осуществляет отображение текущего положения процесса в исходном тексте программы.

3.3.3. Генерация регистрации переменных

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

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

П. 3.4 посвящён проблеме преобразования объектов.

При отладке сгенерированной программы на Фортране MPI или Си MPI необходимо осуществлять преобразования объектов, которыми оперирует пользователь - объектов НОРМА-программы - в объекты сгенерированной отлаживаемой программы. Это необходимо делать при обработке различных запросов пользователя, а также при отображении результатов запросов осуществлять обратное преобразование. Использованием данного преобразования достигается то, что пользователь оперирует объектами исходной программы на языке НОРМА и получает информацию в терминах тех объектов, которые он сам создал в своей программе.

Осуществляет такие преобразования Монитор. Он получает запросы пользователя от Пользовательского интерфейса "как есть", без всякой предварительной обработки. Затем Монитор проверяет синтаксическую правильность выражений в запросе, и, обладая полной информацией о произведённом разбиении и о текущем контексте каждого процесса, Монитор начинает выполнение запроса. Для этого при вычислении значений переменных, присутствующих в выражении, он отправляет каждому отлаживаемому процессу запрос о той части значений, которая находится в данном процессе. После получения от каждого процесса запрошенной части значений, Монитор объединяет в нужном порядке все имеющиеся части и вырабатывает таким образом единое значение переменной - так, как она была описана в НОРМА-программе. Затем Монитор производит необходимые вычисления (соответствующие выражению из пользовательского запроса) и отправляет полученный результат обратно Пользовательскому интерфейсу.

В п. 3.5 приводится схема инструментации внешних модулей на языке Фортран MPI.

Для реализации в отладчике поддержки внешних модулей на языке Фортран MPI была применена и несколько расширена схема отладчика, реализованная при отладке НОРМА-программ: написанный программистом программный код внешних модулей на Фортране MPI подвергается инструментации. При этом в текст программы вставляются операторы обращения к функциям Библиотеки связи с Монитором. Монитор так же, как и в случае НОРМА-программы собирает информацию от всех процессов и посылает/принимает команды от Пользовательского интерфейса. Только в данном случае Монитор уже не производит никаких преобразований -

пользователь при отладке работает в контексте написанной им программы на Фортране MPI.

Для генерации отладочной информации была разработана специальная программа - инструментатор, которая анализирует внешний модуль и вставляет в него вызовы функций Библиотеки связи с Монитором. Схема вставки отладочной информации аналогична схеме, примененной при трансляции программ на языке НОРМА. Существенное отличие имеется только в том, что все переменные, описанные в COMMON-блоках, т.е. глобальные для всей программы, регистрируются один раз. Для этого их описания дублируются в самой программе (программная единица PROGRAM), и там же производится их регистрация с указанием того, что это глобальная переменная.

П. 3.6 распространяет изложенные выше решения на отладку программ на Фортране MPI.

Программа-инструментатор внешних модулей была доработана для обработки собственно программы на Фортране MPI и генерации отладочной информации по всей исследуемой программе. Отладка программы начинается после вызова функции MPI_Init(...), и заканчивается перед вызовом функции MPI_FinaIize(...). В остальном процесс отладки программы на Фортране MPI ничем не отличается от отладки внешнего модуля на Фортране MPI для НОРМА-программы.

В п. 3.7 изложены перспективы продолжения работы для реализации отладки программ и внешних модулей на Си MPI. В настоящее время для Си MPI обеспечивается отладка только сгенерированных НОРМА программ.

В п. 3.8 приведено подробное описание функциональных возможностей отладчика. Имеются скриншоты окна отладчика при отладке программы на языке НОРМА и при отладке внешнего модуля на языке Фортран MPI. Подробно рассказано о всех приведённых на скриншотах элементах окна отладчика.

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

• значения переменных-массивов;

• групповые операторы;

• поиск точек экстремума;

• выяснение значений индексов точек, в которых выполняются те или иные условия.

В п. 3.10 приводятся данные об опыте применения отладчика.

Отладчик параллельных программ на языке НОРМА с поддержкой Фортрана MPI тестировался на различных вычислительных комплексах со следующими аппаратно-программными характеристиками:

• архитектура х86, операционная система Windows ХР;

• архитектура х86, операционная система Linux;

• архитектура IA64, операционная система Linux;

• архитектура Power PC, операционная система Linux;

Пользовательский интерфейс при этом всегда выполнялся на персональном компьютере архитектуры х86 под управлением операционной системы Windows ХР.

Число используемых процессоров было от 2 до 16 на небольших вычислительных установках, что типично для тестовых задач, и до 80 на вычислительных установках, обладающих достаточными процессорными ресурсами. В последнем случае под отладчиком запускались реальные программы решения задач математической физики с большими объёмами вычислительных данных.

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

Замедление при числе процессоров до 10-16 не ощущается критичным -оно составляет порядка 2-х - 3-х раз для программ на языке НОРМА и до 10 раз для программ на языке Фортран MPI. При увеличении количества процессоров более 20 существенно возрастает нагрузка на Монитор, наступает такой момент, когда Монитор начинает непрерывно находиться в режиме диалога с отлаживаемыми процессами, и процессам приходится простаивать в ожидании своей очереди на обработку запроса. Это приводит к ещё большему увеличению времени выполнения программы под отладчиком.

Как можно решить эту проблему? Есть две идеи, которые можно попытаться использовать для борьбы с возрастающим временем работы программ под отладчиком:

1. Перенести часть логики отладчика из Монитора в Библиотеку связи с монитором.

2. Контролировать не весь код отлаживаемой программы, а выборочные участки.

Отладчик параллельных программ на языке НОРМА с поддержкой Фортрана MPI был успешно применен на практике для отладки программ решения трехмерных задач газовой динамики и задач о фокусировке ударных и взрывных волн, а также в работах в рамках научно-технической программы Союзного государства Российской Федерации и Республики Беларусь

"Развитие и внедрение в государствах-участниках Союзного государства наукоёмких компьютерных технологий на базе мультипроцессорных вычислительных систем".

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

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

В п. 4.1 сформулирована постановка задачи - создание Диалогового интерфейса для инструментов исследования MPI-программ, имеющихся в DVM-системе.

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

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

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

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

Для создания комплекса, позволяющего пользователю со своего компьютера вести диалог с Системой исследования MPI-программ, работающей на удалённом вычислительном комплексе, было решено

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

Созданный комплекс, являющийся дополнением к Средствам отладки MPI-программ в DVM-системе, получил название "Диалоговый интерфейс для системы исследования MPI-программ". Пользовательский интерфейс и Монитор, разработанные для Отладчика параллельных программ на языке НОРМА с поддержкой Фортрана MPI, были доработаны для решения новых специфичных задач создаваемого Диалогового интерфейса для системы исследования MPI-программ. В Пользовательском интерфейсе были реализованы новые типы окон для представления информации в удобном, структурированном виде и реализованы средства навигации как внутри окон, так и между окнами различных типов, средства частичного запроса информации. В Мониторе была реализована схема установки связи и обмен информацией со специально созданной программой, которая выполняет роль Модуля Сбора Информации в общей схеме распределенного комплекса для отладки и исследования удаленно выполняющихся параллельных программ. Эта программа, названная Диалоговый Анализатор, была создана с использованием имеющихся библиотек доступа к файлам трасс и библиотек анализаторов Средств отладки MPI-программ в DVM-системе, и с использованием библиотеки связи компонентов для связи с Монитором.

В п. 4.3 приведено подробное описание функциональных возможностей Диалогового интерфейса. Имеются скриншоты окон Диалогового интерфейса в различных режимах работы. Подробно рассказано о всех приведённых на скриншотах элементах окна Диалогового интерфейса.

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

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

• архитектура х86, операционная система Linux; архитектура IA64, операционная система Linux;

• архитектура Power PC, операционная система Linux;

Пользовательский интерфейс при этом всегда выполнялся на персональном компьютере архитектуры х86 под управлением операционной системы Windows ХР.

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

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

Диалоговый интерфейс для системы исследования MPI-программ успешно применялся в работах в рамках научно-технической программы Союзного государства Российской Федерации и Республики Беларусь "Развитие и внедрение в государствах-участниках Союзного государства наукоёмких компьютерных технологий на базе мультипроцессорных вычислительных систем". Применение комплекса на ранних этапах разработки обеспечило быстрое и качественное исправление ошибок, допущенных при написании программ, а на этапе оптимизации работы параллельных программ -устранение "узких мест" и повышение эффективности разработанных программ.

Глава 5. Информация о программной реализации распределённого комплекса для создания инструментов отладки и исследования параллельных программ в диалоговом режиме

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

Заключение

В заключении подводится итог проделанной работе и приводятся её основные результаты.

Основные результаты работы

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

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

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

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

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

Публикации по теме диссертации

1. Бугеря А.Б., Колударов П.И., Кулешова М.И. Диалоговый интерфейс для отладки параллельных программ. Научный сервис в сети Интернет: технологии параллельного программирования. Труды Всероссийской научной конференции. — М.: Изд-во МГУ, 2006, с. 86-88.

2. Бугеря А.Б., Колударов П.И., Кулешова М.И. Комбинированная отладка параллельных программ. Информационные и математические технологии в научных исследованиях: Труды XI международной конференции, часть II (июль 2006 г., г. Иркутск). — Иркутск: ИСЭМ СО РАН, 2006, с. 15-20.

3. Бугеря А.Б. Диалоговый отладчик параллельных программ. Информационные и математические технологии в науке, технике и образовании. Сборник Трудов X Байкальской всероссийской конференции, часть 1 (июль 2005 г., г. Иркутск). — Иркутск: ИСЭМ СО РАН, 2005, с.215-219.

4. Бугеря А.Б., Колударов П.И. Отладчик параллельных программ на языке НОРМА и Фортран. Научный сервис в сети Интернет. Труды Всероссийской научной конференции. — М.: Изд-во МГУ, 2004, с. 26-28.

5. Бугеря А.Б. Отладка и анализ удаленно выполняющихся параллельных программ. Параллельные вычислительные технологии (ПаВТ'2008): Труды международной научной конференции. — Челябинск: Издательство ЮурГУ, 2008, с. 48-56.

6. Бугеря А.Б,, Колударов П.И., Кулешова М.И. Средства отладки эффективности MPI-программ. Научный сервис в сети Интернет: решение больших задач. Труды Всероссийской научной конференции. — М.: Изд-во МГУ, 2008, с. 89-90.

7. Бугеря А.Б. Диалоговая отладка параллельных программ: распределенная схема взаимодействующих компонентов. — Программирование, 2008, № 3, с. 42-49.

Подписано в печать 27.10 2008. Формат 60x84/16. Усл. печ. л. 1,2. Тираж 60 экз. Заказ 9-23 ИПМ им.М.В.Келдыша. 125047, Москва, Миусская пл., 4.

Оглавление автор диссертации — кандидата физико-математических наук Бугеря, Александр Борисович

Введение.

Актуальность темы.

Специфика отладки и исследования параллельных программ.

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

Практическая ценность работы.

Новизна работы.

Апробация работы.

Краткое содержание работы.

Глава 1. Известные подходы к отладке и исследованию параллельных программ.

1.1 Традиционные подходы.

1.1.1 Отладочные печати.

1.1.2 Диалоговая отладка.

1.2 Автоматизированные подходы.

1.2.1. Автоматический контроль корректности.

1.2.2. Сравнительная отладка.

1.3 Сравнение различных подходов к отладке и исследованию параллельных программ.

1.4 Инструментация программ.

Глава 2. Общая схема распределенного комплекса.

2.1. Пользовательский интерфейс.

2.2. Монитор.

2.3. Модули сбора информации.

2.4. Программный комплекс.

Глава 3. Отладчик параллельных программ на языке НОРМА с поддержкой Фортрана MPI. Отладчик параллельных программ на языке Фортран MPI.

3.1. Постановка задачи отладки программ, написанных на непроцедурном языке.

3.2. Применение общей схемы распределенных компонентов.

3.3. Схема генерации отладочной информации.

3.3.1. Генерация начала/конца блоков.

3.3.2. Генерация начала выполнения оператора.

3.3.3. Генерация регистрации переменных.

3.4. Преобразования объектов во время выполнения программы

3.5. Ииструментация внешних модулей на языке Фортран MPI.

3.6. Отладчик для Фортрана MPI.

3.7. Отладка программ и внешних модулей на Си MPI.

3.8. Описание функциональных возможностей отладчика.

3.9. Выражения и значения переменных: специальные возможности и функции.

3.10. Опыт применения отладчика, замеченные недостатки.

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

4.1. Постановка задачи.

4.2. Применение общей схемы распределенных компонентов.

4.3. Описание функциональных возможностей Диалогового интерфейса.

4.4. Опыт применения Диалогового интерфейса.

Глава 5. Информация о программной реализации распределённого комплекса для создания инструментов отладки и исследования параллельных npoipaMM в диалоговом режиме.

5.1 Характеристики программной реализации распределённого комплекса.

5.2 Возможность реализации новых инструментов и средств.

Введение 2008 год, диссертация по информатике, вычислительной технике и управлению, Бугеря, Александр Борисович

Актуальность темы

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

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

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

Специфика отладки и исследования параллельных программ

Существуют различные типы параллельных архитектур: многопроцессорные системы с общей памятью, распределённые (кластерные) системы, гибридные системы. Соответственно, существуют разные модели параллелизма (например, OpenMP [1], MPI [2], GRID-среды [3 J) и разные алгоритмы параллельной обработки данных, ориентированные на определённые модели параллелизма. Необходимо отметить, что параллельные алгоритмы и программы, как правило, существенно сложнее последовательных.

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

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

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

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

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

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

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

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

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

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

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

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

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

Практическая ценность работы

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

Диалоговый отладчик программ, написанных на языке НОРМА, с поддержкой отладки внешних модулей, написанных на Фортране MPI и отладчик программ, написанных на Фортране MPI, могут быть использованы для отладки прикладных программ на соответствующих языках. Отладчики были апробированы на ряде вычислительных систем: кластерах МВС-15000ВМ, MBC-6000IM Межведомственного Суперкомпыотерпого Центра РАН и находятся в опытной эксплуатации на кластере FIRE Института Прикладной Математики им. М.В. Келдыша РАН. Отладчики доступны для использования всем желающим в составе системы НОРМА [6].

Диалоговый интерфейс для системы исследования МР1-программ может быть использован для исследования и отладки МРГ-программ в DVM-системе [7].

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

Новизна работы

В дайной работе можно выделить два принципиально новых момента:

1. Предложенная автором универсальная распределенная схема взаимодействующих компонентов и реализованный на её основе легко модифицируемый и расширяемый программный комплекс для отладки и исследования удаленно выполняющихся параллельных программ. Автору не известны какие-либо существующие программные комплексы с подобной архитектурой.

2. Реализован диалоговый отладчик для непроцедурного языка (на примере языка НОРМА).

Апробация работы

Основные результаты работы опубликованы в статьях [8 - 151. Результаты работы обсуждались на следующих конференциях и семинарах:

Международная научная конференция «Параллельные вычислительные технологии (Г1аВТ'2008)». Доклад «Отладка и анализ удаленно выполняющихся параллельных программ», Россия, Санкт

Петербург, январь 2008 г.

Всероссийская научная конференция «Научный сервис в сети Интернет: технологии параллельного программирования». Доклад «Диалоговый интерфейс для отладки параллельных программ», Новороссийск, сентябрь 2006 г.

XI Байкальская Всероссийская конференция «Информационные и математические технологии в научных исследованиях». Доклад «Комбинированная отладка параллельных программ», Аршан, июль 2006 г.

X Байкальская Всероссийская конференция «Информационные и математические технологии в науке, технике и образовании». Доклад «Отладчик параллельных программ на языке НОРМА и Фортран», Северобайкальск, июль 2005 г.

Семинар Ав томатизация программирования ИПМ. Краткое содержание работы

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

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

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

В четвёртой главе рассмотрена разработка Диалогового интерфейса для системы исследования MPI-программ. Разработка выполнена на основе имеющихся в DVM-системе средствах для отладки и исследования MPI программ по трассам и предложенной во второй главе общей схемы организации распределенного программного комплекса для отладки и исследования удаленно выполняющихся параллельных программ. Рассмотрены компоненты комплекса, их роли и схема взаимодействия. Описаны функциональные возможности созданного Диалогового интерфейса.

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

В заключении подводится итог проделанной работе и приводятся её основные результаты.

Заключение диссертация на тему "Диалоговая отладка параллельных программ"

Заключение

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

В работе были получены следующие основные результаты:

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

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

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

4. Разработан диалоговый отладчик программ, написанных па

Фортране MPI.

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

Работа выполнена под руководством доктора физико-математических паук, ведущего научного сотрудника ИПМ им. М.В.Келдыша Андрианова Александра Николаевича, которому автор выражает искреннюю признательность. Автор благодарит сотрудников ИПМ им. М.В.Келдыша Ефимкина Кирилла Николаевича и Крюкова Виктора Алексеевича за внимание к работе и полезные обсуждения. Огромное спасибо сотрудникам ИПМ им. М.В.Келдыша Колударову Павлу Ивановичу и Кулешовой Марии Игоревне за плодотворную совместную работу.

Библиография Бугеря, Александр Борисович, диссертация по теме Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей

1. OpenMP Consortium, http://www.openmp.org.

2. Message-Passing Interface Forum, http://www.mpi-forum.org.

3. Grid Computing Info Centre, http://www.gridcomputing.com.

4. OpenSSII. http://www.openssh.org.

5. Андрианов A.M., Бугеря А.Б., Ефимкип K.H., Задыхайло И.Б. НОРМА. Описание языка. Рабочий стандарт. — М.: Препринт ИПМ им.М.В.Келдыша РАН, 1995, № 120, 52с.

6. Система НОРМА, http://www.keldysh.ru/pages/norma/.

7. Система DVM. http://www.keldysh.ru/dvm/.

8. Бугеря А.Б., Колударов П.И., Кулешова М.И. Диалоговый интерфейс для отладки параллельных программ. Научный сервис в сети Интернет: технологии параллельного программирования. Труды Всероссийской научной конференции. — М.: Изд-во МГУ, 2006, с. 8688.

9. Бугеря А.Б., Колударов П.И. Отладчик параллельных программ паязыке НОРМА и Фортран (Принципы реализации). — М.: Препринт ИГ1М им. М.В.Келдыша РАН, 2003, № 76, 16 стр.

10. Бугеря А.Б., Колударов П.И. Отладчик параллельных программ на языке НОРМА и Фортран. Научный сервис в сети Интернет. Труды Всероссийской научной конференции. — М.: Изд-во МГУ, 2004, с. 2628.

11. Бугеря А.Б. Отладка и анализ удаленно выполняющихся параллельных программ. Параллельные вычислительные технологии (ПаВТ'2008). Труды международной научной конференции. — Челябинск: Издательство ЮурГУ, 2008, с. 48-56.

12. Бугеря А.Б. Диалоговая отладка параллельных программ: распределенная схема взаимодействующих компонентов. — Программирование, 2008, № 3, с. 42-49.

13. Бугеря А.Б., Колударов П.И., Кулешова М.И. Средства отладки эффективности MPI-программ. Научный сервис в сети Интернет: решение больших задач. Труды Всероссийской научной конференции. — М.: Изд-во МГУ, 2008, с. 89-90.

14. Intel Thread Checker. l^p://www.intel.com/cd/soibvare/products/asrno-na/cng/threading/286406.htm

15. Total View. http://www.etnus.com/TotalView/

16. Коваленко M.P. Интерактивная отладка MPI-программ с использованием параллельного отладчика TDB. Научный сервис в сети Интернет: технологии распределенных вычислений. Труды Всероссийской научной конференции. — М.: Изд-во МГУ, 2005, с. 115-119.

17. Hood R. The p2d2 Project: Building a Portable Distributed Debugger // Proc. of the ACM SIGMETRICS Symposium on Parallel and Distributed Tools. Philadelphia, 1996. pages 127-136. http://doi.acm.org/10.1145/238020.238058

18. J. Lourenco et al., An integrated testing and debugging environment for parallel and distributed programs, Proceedings of the 23rd Euromicro. Conference, Budapest, 1997, pp. 291-298.

19. Allinea DDT (Distributed Debugging Tool), http://www.allinea.com.

20. Андрианов A.H., Базаров С.Б., Бугеря А.Б., Колударов П.И. Применение отладчика программ на языке Норма при решении трехмерных задач газовой динамики на многопроцессорных ЭВМ. — М.: Препринт ИПМ им. М.В.Келдыша РАН, 2005, № 118, 11 стр.

21. Андрианов А.Н., Базаров С.Б., Бугеря А.Б., Колударов П.И. Набоко И.М. Фокусировка взрывных волн: Моделирование на параллельных компьютерах. — Химическая физика, 2006, т.25, № 11, с. 54-59.