Содержание к диссертации
Введение
Глава 1. Известные подходы к отладке и исследованию параллельных программ 13
1.1 Традиционные подходы 13
1.1.1 Отладочные печати 13
1.1.2 Диалоговая отладка 14
1.2 Автоматизированные подходы 16
1.2.1. Автоматический контроль корректности 16
1.2.2. Сравнительная отладка 17
1.3 Сравнение различных подходов к отладке и исследованию параллельных программ 18
1.4 Инструментация программ 20
Глава 2. Общая схема распределенного комплекса 22
2.1. Пользовательский интерфейс 25
2.2. Монитор 27
2.3. Модули сбора информации
2.4. Программный комплекс 29
Глава 3. Отладчик параллельных программ па языке НОРМА с поддержкой Фортрана MPI. Отладчик параллельных программ на языке Фортран MPI 31
3.1. Постановка задачи отладки программ, написанных на непроцедурном языке 31
3.2. Применение общей схемы распределенных компонентов 33
3.3. Схема генерации отладочной информации
3.3.1. Генерация начала/конца блоков 35
3.3.2. Генерация начала выполнения оператора 36
3.3.3. Генерация регистрации переменных
3.4. Преобразования объектов во время выполнения программы .37
3.5. Инструмеитация внешних модулей на языке Фортран MPI 38
3.6. Отладчик для Фортрана MPI 40
3.7. Отладка программ и внешних модулей на Си MPI 40
3.8. Описание функциональных возможностей отладчика 41
3.9. Выражения и значения переменных: специальные возможности и функции 49
3.10. Опыт применения отладчика, замеченные недостатки 52
Глава 4. Диалоговый интерфейс для системы исследования MPI программ 56
4.1. Постановка задачи 56
4.2. Применение общей схемы распределенных компонентов 58
4.3. Описание функциональных возможностей Диалогового интерфейса
4.4. Опыт применения Диалогового интерфейса 65
Глава 5. Информация о программной реализации распределённого комплекса для создания инструментов отладки и исследования параллельных проірамм в диалоговом режиме 68
5.1 Характеристики программной реализации распределённого комплекса 68
5.2 Возможность реализации новых инструментов и средств 70
Заключение 74
Литература
- Автоматизированные подходы
- Модули сбора информации
- Схема генерации отладочной информации
- Применение общей схемы распределенных компонентов
Введение к работе
Актуальность темы
В последнее время в сфере инженерных и научно-технических расчетов, задач математического моделирования, задач реального времени наметилась тенденция в сторону отказа от последовательных решений для однопроцессорных компьютеров. Практически все современные создаваемые прикладные пакеты в указанных выше областях ориентированы на параллельную или распределённую вычислительную среду. Это связано в первую очередь со всё возрастающими требованиями к достоверности получаемых результатов и точности вычислений, а отсюда - многократно возрастающие объёмы обрабатываемых данных. Кроме этого появляются новые методы и алгоритмы решения задач, реализация которых на однопроцессорных системах была бы просто невозможной из-за повышенных требований к производительности вычислительной системы. Повсеместная распространенность различных видов параллельных систем также играет свою положительную роль в этом процессе - сейчас купить 2-х процессорный компьютер можно в обыкновенном компьютерном магазине, а практически все научно-исследовательские институты и высшие учебные заведения обладают собственными параллельными машинами различных архитектур и различной производительности.
Одновременно с возрастанием потребности в параллельных программах и с распространением многопроцессорных, многоядерных и кластерных технологий разработка параллельных программ становится все более актуальной, поскольку пользователи программ хотят максимально полно использовать возможности имеющейся у них современной вычислительной аппаратуры. Высокая сложность разработки параллельных программ, часто не позволяющая эффективно использовать возможности высокопроизводительных компьютеров, является общепризнанным фактом.
В настоящее время ведутся интенсивные исследования в области автоматизации разработки параллельных программ, в частности, в области создания инструментов для отладки и исследования параллельных программ. Цели применения этих инструментов могут быть самыми различными. Это, в первую очередь, поиск ошибок в программе, в том числе и таких специфических для параллельных программ, как ошибки обращения к процедурам, обеспечивающим параллелизм, ошибки при передаче сообщений, ошибки синхронизации, ошибки доступа к общим ресурсам и т.д. Но и затем, после того как программа начала работать, и работать правильно, отладка программы обычно не заканчивается. Сразу возникает вопрос: а насколько эффективно она работает? Равномерно ли распределена вычислительная нагрузка между компонентами параллельной программы? Для того, чтобы ответить на эти и другие подобные вопросы, применяют специальные инструменты исследования параллельных программ.
Специфика отладки и исследования параллельных программ
Существуют различные типы параллельных архитектур: многопроцессорные системы с общей памятью, распределённые (кластерные) системы, гибридные системы. Соответственно, существуют разные модели параллелизма (например, ОрепМР [1], MPI [2], GRID-среды [3 J) и разные алгоритмы параллельной обработки данных, ориентированные на определённые модели параллелизма. Необходимо отметить, что параллельные алгоритмы и программы, как правило, существенно сложнее последовательных.
Параллельные программы и отлаживать сложнее, так как в них возникают ошибки новых типов, отсутствующие в последовательных программах, вызываемые некорректной синхронизацией процессов или нитей и некорректным использованием средств, обеспечивающих
параллелизм.
Существенно усложняет отладку параллельных программ их недетерминированное поведение, поскольку оно затрудняет использование привычного приема постепенной локализации ошибок посредством многократных запусков программы под управлением отладчика.
Сложность создания качественных средств отладки и исследования параллельных программ является, с одной стороны, следствием специфичных проблем разработки параллельных программ, а, с другой стороны, разрабатываемый отладчик параллельных программ представляет собой также параллельную программу, которая должна взаимодействовать с отлаживаемой, также параллельной, что еще больше усложняет проблему.
При диалоговой отладке и исследовании параллельных программ особенно актуальна проблема визуализации получаемых результатов. В отличие от простой последовательной программы, где имеется одна текущая точка выполнения программы, а у переменной - одно значение, в параллельной программе точек выполнения может быть много, сотни или даже тысячи. Значений у одной и той же программной переменной также может быть много - у каждого процесса своё. Перед создателями средств отладки и исследования параллельных программ встаёт нелегкая задача представить всю имеющуюся информацию и предоставить средства управления процессом отладки: с одной стороны - в удобном, понятном для пользователя виде, а с другой стороны - дать пользователю исчерпывающую, полную картину поведения исследуемой программы. Как сделать это отображение удобным и компактным, и как в то же время позволить пользователю при желании получить доступ ко всем интересующим его подробностям - вот эту задачу и должен решать качественный инструмент отладки и исследования параллельных программ.
Еще одним характерным отличием процесса отладки и исследования
параллельной программы от аналогичных действий с последовательной программой является то, что в типичном случае параллельная программа выполняется на удаленном вычислительном комплексе. Пользователь имеет возможность войти (чаще всего по протоколу SSH [4] с интерфейсом командной строки) на управляющую хост-машину удаленного вычислительного комплекса, скомпилировать на ней свою параллельную программу, подготовить файлы данных и запустить программу па выполнение. Проірамма выполняется на вычислительных узлах комплекса, к которым пользователь доступа уже не имеет. Поэтому влиять на ход выполнения отдельных процессов своей программы пользователь уже не может, в отличие от отладки последовательной программы, выполняемой в типичном случае на компьютере, непосредственно за которым сидит пользователь. Также из-за того, что исследуемая параллельная программа выполняется на удаленном комплексе, возникает проблема передачи собранной информации о программе на компьютер пользователя - в некоторых случаях объем этой информации может быть достаточно большим.
Цели и задачи работы
Диссертационная работа посвящена проблеме диалоговой отладки и исследования удаленно выполняющихся параллельных программ. Цели работы следующие:
Разработать схему распределенных взаимодействующих компонентов программного комплекса для создания инструментов отладки и исследования параллельных программ в диалоговом режиме;
В соответствии с разработанной схемой создать программный комплекс для реализации инструментов отладки и исследования параллельных программ в
диалоговом режиме.
На основе созданного программного комплекса были поставлены задачи разработать:
Диалоговый отладчик программ, написанных на декларативном непроцедурном языке НОРМА [5], с поддержкой отладки внешних модулей, написанных на языке Фортран с использованием вызовов библиотеки MPI [2]. Далее язык Фортран с использованием вызовов библиотеки MPI будем называть просто Фортран MPI.
Диалоговый отладчик программ, написанных на языке Фортран MPI.
Диалоговый интерфейс для системы исследования MPI-программ.
Практическая ценность работы
Предложенные автором распределённая схема взаимодействующих компонентов и реализованный на ее основе программный комплекс могут быть использованы для создания широкого спектра инструментов для решения задач отладки и исследования удаленно выполняющихся параллельных программ, ориентированных на диалоговый режим работы с пользователем.
Диалоговый отладчик программ, написанных на языке НОРМА, с поддержкой отладки внешних модулей, написанных на Фортране MPI и отладчик программ, написанных на Фортране MPI, могут быть использованы для отладки прикладных программ на соответствующих языках. Отладчики были апробированы на ряде вычислительных систем: кластерах МВС-15000ВМ, MBC-6000IM Межведомственного Суперкомпыотериого Центра РАН и находятся в опытной эксплуатации на кластере FIRE Института Прикладной Математики им. М.В. Келдыша РАН. Отладчики доступны для
использования всем желающим в составе системы НОРМА [6].
Диалоговый интерфейс для системы исследования МРТ-программ может быть использован для исследования и отладки МРГ-программ в DVM-системе [7].
Реализованный распределённый программный комплекс легко может быть усовершенствован и расширен реализацией новых инструментов для решения задач отладки и исследования удаленно выполняюпщхся параллельных программ, ориентированных на диалоговый режим работы с
пользователем.
Новизна работы
В данной работе можно выделить два принципиально новых момента:
Предложенная авчором универсальная распределенная схема взаимодействующих компонентов и реализованный на её основе легко модифицируемый и расширяемый программный комплекс для отладки и исследования удаленно выполняющихся параллельных программ. Автору не известны какие-либо существующие программные комплексы с подобной архитектурой.
Реализован диалоговый отладчик для непроцедурного языка (на примере языка НОРМА).
Апробация работы
Основные результаты работы опубликованы в статьях (8 - 151. Результаты работы обсуждались на следующих конференциях и семинарах:
Международная научная конференция «Параллельные
вычислительные технологии (ПаВТ'2008)». Доклад «Отладка и анализ удаленно выполняющихся параллельных программ», Россия, Сапкт-
Петербург, январь 2008 г.
Всероссийская научная конференция «Научный сервис в сети Интернет: технологии параллельного программирования». Доклад «Диалоговый интерфейс для отладки параллельных программ», Новороссийск, сентябрь 2006 г.
XI Байкальская Всероссийская конференция «Информационные и математические технологии в научных исследованиях». Доклад «Комбинированная отладка параллельных программ», Лршан, июль 2006 г.
X Байкальская Всероссийская конференция «Информационные и математические технологии в науке, технике и образовании». Доклад «Отладчик параллельных программ на языке НОРМА и Фортран», Северобайкальск, июль 2005 г.
Семинар Автоматизация программирования ИПМ.
Кратное содержание работы
В первой главе приводится обзор и анализ существующих подходов к функциональной отладке и исследованию параллельных программ. Особое внимание уделяется вопросу отладки научно-технических приложений, требующих высокопроизводительных вычислений.
Вторая глава посвящена описанию предложенной общей схемы взаимодействующих компонентов программного комплекса для создания инструментов отладки и исследования параллельных программ в диалоговом режиме. Описаны основные компоненты комплекса, их роли в общей схеме, решаемые задачи и принципы взаимодействия.
В третьей главе рассмотрены разработки диалогового отладчика параллельных программ, написанных на языке НОРМА с поддержкой Фортрана MPI и диалогового отладчика параллельных проірамм, написанных па языке Фортран МРІ. Разработки выполнены па основе
предложенной во второй главе общей схемы организации распределенного программного комплекса для отладки и исследования удаленно выполняющихся параллельных программ. Описаны компоненты отладчиков, их роли и функции, выполняемые при отладке удаленно выполняющихся параллельных программ. Подробно описаны функциональные возможности созданных отладчиков.
В четвёртой главе рассмотрена разработка Диалогового интерфейса для системы исследования MPI-программ. Разработка выполнена на основе имеющихся в DVM-системе средствах для отладки и исследования MPI программ по трассам и предложенной во второй главе общей схемы организации распределенного программного комплекса для отладки и исследования удаленно выполняющихся параллельных программ. Рассмотрены компоненты комплекса, их роли и схема взаимодействия. Описаны функциональные возможности созданного Диалогового интерфейса.
В пятой главе приводится техническая информация о программной реализации созданного распределённого программного комплекса, и о программной реализации всех инструментов, разработанных на его основе. Представлены данные о расширяемости и модифицируемости компонентов комплекса, дана оценка сложности разработки новых инструментов для отладки и исследования удалённо выполняющихся параллельных программ па основе созданного программного комплекса.
В заключении подводится итог проделанной работе и приводятся её основные результаты.
Автоматизированные подходы
В тех случаях, когда у пользователя есть две версии программы, одна из которых работает верно (эталонная), а другая - нет (отлаживаемая), работающую версию можно принять как формальную спецификацию неработающей. Идея сравнительной отладки как раз и заключается в сравнении работы двух версий одной и той же программы, и при этом сравниваются значения переменных в определенных контролируемых точках выполнения программ. Данные для сравнения можно брать как динамически из выполняющихся программ, так и из трасс, полученных при их выполнении. Сравнение производится с заданной точностью, при выходе за сё пределы выдается соответствующая диагностика.
При отладке параллельных программ в качестве эталонной обычно используют последовательную программу, которую часто можно отладить стандартными средствами, однако за эталон можно брать и параллельную программу. Сравнительная отладка позволяет обнаруживать различия, вызванные изменениями программы, например, распараллеливанием, а -также различия, возникающие при переносе программ с одной платформы на другую или при изменении конфигурации процессоров. Выявленные различия свидстельствовуют об имеющихся в программе ошибках. Заметим, что сравнительная отладка невозможна при недетерминированном поведении параллельных программ.
Как было сказано выше, данные для сравнения берутся из памяти во время выполнения программы или из трассы после завершения ее выполнения. Сравнение может осуществляться в процессе выполнения обеих программ, либо в процессе выполнения одной программы с трассой другой, либо могут сравниваться трассы двух программ. У каждого подхода есть достоинства и недостатки. При сравнении выполнений возможны сильное замедление и изменение поведения параллельной программы, вызванные её синхронизацией с последовательной, что может существенно изменить характер поведения программы. Трассы же обычно требует много дисковой памяти, и их генерация также приводит к некоторому замедлению программ.
Все вышеописанные подходы к отладке и исследованию параллельных программ имеют как свои достоинства, так и недостатки. Даже такой, казалось бы, устаревший подход, как отладочные печати, может быть с успехом применён в случае отсутствия на конкретной вычислительной системе каких-либо других средств отладки, или в случае, когда необходимо минимальное вмешательство в процесс выполнения программы. Диалоговая отладка хороша своей интерактивностыо, возможностью оперативно влиять па ход отладки и своей близостью к традиционным отладчикам последовательных программ. С другой стороны, диалоговая отладка плохо применима на вычислительных комплексах с системами очередей, диалоговая отладка обычно не предусматривает какой-либо автоматизации по сравнению с автоматическим анализом корректности или сравнительной отладкой - все объекты инспектируются только по запросу пользователя и им же анализируются.
При применении автоматических методов отладки по трассе, в процессе выполнения программы во внешнем файле сохраняется разнообразная информация о ходе выполнения каждого процесса исследуемой программы. Объём сохраняемых данных обычно очень велик, что может вызывать проблемы с дисковым пространством и временем, требуемым на сохранение данных. В процессе поиска ошибок в силу большого объема и неструктурированпости данных использовать только трассировщик для отладки программ, больших, чем тестовые, представляется достаточно утомительной задачей. С этой стороны диалоговая отладка или динамическая в процессе выполнения программы выглядит предпочтительней.
Однако при дальнейшей отладке программы, когда рассматриваются вопросы её эффективности, использования памяти, вычислительных ресурсов и т.п., отладка по трассе представляется более предпочтительной. Во-первых, при анализе временных характеристик или динамического поведения одних компонентов программы относительно других необходимо минимальное вмешательство в работу исследуемой программы. Во-вторых, такого рода исследования проводятся обычно для всей программы во всем временном интервале её работы, а не какого-то конкретного фрагмента. Поэтому использование трассировщика для подобных исследований представляется наиболее приемлемым вариантом. Но, как отмечалось выше, гигантские объемы получающихся трасс сильно усложняют процесс исследования. Следовательно, полученные трассы необходимо каким-то образом автоматически обрабатывать, выделяя и группируя интересующие пользователя данные, а также, если пользователя интересует подробная информация по каким-то аспектам выполнения программы, показывать ему не всю трассу, а только те события, которые удовлетворяют выбранным пользователем критериям. И, таким образом, мы опять приходим к необходимости диалога с пользователем, только не в процессе выполнения проіраммьі, а после, в процессе исследования полученных трасс.
Модули сбора информации
Непроцедурный язык Норма [5] предназначен для автоматизации решения сеточных задач на вычислительных комплексах с параллельной архитектурой. Этот язык позволяет исключить фазу программирования, которая необходима при переходе от расчетных формул, заданных прикладным специалистом, к программе. Расчетные формулы записываются на языке Норма в математическом, привычном для прикладного специалиста виде, затем компилятор языка НОРМА генерирует программу на «традиционном» языке программирования - Фортране или Си. Пор5гдок выполнения расчётов для формул определяется компилятором. При генерации может быть построена как последовательная, так и параллельная проірамма с использованием одной из поддерживаемых библиотек параллелизма - MPI, PVM или DVM. В дальнейшем в данной работе будет рассматриваться только версия МРІ, как наиболее используемая и распространённая по сравнению с другими версиями. Причём отладка внешних модулей поддерживается только для Фортрана МРІ. Для Си МРІ поддерживается только отладка сгенерированных спецификаций на языке НОРМА. Но всё то, что реализовано в отладчике для версии МРІ и для Фортрана МРІ можно реализовать без всяких изменений для остальных версий выходного языка.
При построении выходной параллельной программы в модели передачи сообщений для параллельных систем с распределенной архитектурой компилятор автоматически по программе на Норме определяет структуру выходной программы, распределяет данные и их обработку по заданному числу виртуальных процессоров, генерирует операторы счета, управления вычислением, передачи данных между параллельно выполняющимися процессами. Сгенерированная программа также может вызывать подпрограммы и функции, написанные на Фортране или Си пользователем самостоятельно (так называемые "внешние" модули). При выполнении программ на языке НОРМА фактически выполняются автоматически сгенерированные компилятором параллельные программы на языке Фортран МРІ или Си МРІ. Предлагать прикладному специалисту, составившему проірамму на языке НОРМА, отлаживать ее путем отладки параллельной сгенерированной незнакомой программы на другом уже языке было бы, видимо, неправильно. Отладка программ на языке НОРМА на уровне исходного кода и в терминах языка НОРМА выглядит гораздо более предпочтительной.
Таким образом, основную задачу отладки программ на языке НОРМА можно сформулировать следующим образом: реализовать возможность диалоговой отладки декларативных спецификаций на языке НОРМА в терминах языка НОРМА, несмотря на то, что реально выполняется сгенерированная параллельная программа на языке Фортран MPI или Си MPI.
Отметим, что разработка диалогового отладчика для непроцедурного языка, по-видимому, является новой и оригинальной разработкой, автор не имеет информации о существовании подобных систем.
Для создания отладчиков программ на языке Норма с поддержкой Фортрана MPI и программ на языке Фортран MPI было решено использовать разработанную и описанную во второй главе схему распределённых взаимодействующих компонентов. В схему дополнительно введён один новый элемент - модуль генерации отладочной информации. Он необходим для того, чтобы отлаживаемая программа во время выполнения обладала необходимой для отладки информацией о себе и могла предоставить её Модулю сбора информации. Схема распределённых взаимодействующих компонентов созданных отладчиков программ на языке Норма с поддержкой Фортрана MPI и программ на языке Фортран MPI приведена на рис. 2.
Схема генерации отладочной информации
В левой части этого окна находится окно проекта, в котором в виде дерева с папками отражены файлы, составляющие отлаживаемую проірамму. В центральной части главного окна - окно с исходным текстом программ. В данном примере отображается часть файла с текстом программы на языке НОРМА. В поле у левой границы этого окна зелёная стрелка, указывающая па определенную строку исходного кода. Это текущее положение процессов программы. Если несколько процессов находятся в одной и той же точке исходного кода, они показываются одной стрелкой. Под зелёной стрелкой в этом же поле - красный кружок, означающий что в этой строке установлена точка останова. С информацией о положении процессов в программе неразрывно связано следующее окно - крайнее правое. Это окно процессов, в нем в древовидной структуре показывается информация о статусе всех процессов. В корне древовидной структуры располагаются группы процессов. Затем, в каждой из групп - процессы, сгруппированные по местоположению в отлаживаемой программе. Имеется 3 предопределенные группы: выполняющиеся процессы (показываются зеленым цветом) процессы, "зависшие" на каком-то операторе (скорее всего это операторы коммуникации или синхронизации, показываются фиолетовым цветом) процессы, не находящиеся в каком-либо разделе (это может быть в случае программы на языке НОРМА, показываются чёрным цветом)
Пользователь также может создавать собственные группы процессов. В контекстном меню этого окна находятся команды пошаговой отладки, которые при вызове применяются ко всем процессам группы или к выделенным процессам, в зависимости от того, где было вызвано контекстное меню. Одна из групп всегда является активной (изначально это группа выполняющихся процессов), она выделена жирным шрифтом. К процессам, входящим в активную группу, применяются команды пошаговой отладки, вызванные нажатием кнопок на панели инструментов или "горячими клавишами". При двойном щелчке мыши на каком-либо процессе открывается соответствующий его позиции файл исходного кода (если он еще не был открыт) и позиционируется на текущую строку. Из окна процессов для каждого процесса из контекстного меню возможно открыть окно стека вызовов процедур.
На приведённом на рис. 3 примере окно стека вызовов процедур находится внизу справа. В нём для выбранного процесса показывается его стек вызовов. Выбрать отображаемый процесс можно в верхней части окна. В остальной части окна в виде таблицы, в которой верхние строки относятся к вершине стека, а нижние - к началу стека, показывается история вызовов: имя функции, файл и текущая строка в нем. При двойном щелчке мыши на какой-либо строке открывается соответствующий файл исходного кода (если он еще не был открыт) и позиционируется на указанную строку.
Внизу слева находится окно со значениями выражений (переменных). Для переменных, описанных в модуле на языке НОРМА, все выражения в строке просмотра пишутся в терминах языка НОРМА. При просмотре переменных или выражений из внешних модулей или программ на языке Фортран MPI значения показываются для каждого процесса в отдельной колонке. Значения переменных могут участвовать в выражениях в качестве операндов функций, поддерживается широкий набор специфичных для расчетных задач функций (например, MIN, МАХ и т.п.). При отладке в пошаговом режиме значение выражения запрашивается после каждого шага. Если снять флажок слева от выражения, его значение запрашиваться не будет.
На рис. 6 приведён пример установки соединения с удалённой вычислительной установкой при старте отладки. Справа показано окно терминала, в котором на удалённой вычислительной установке запущен
Монитор с указанием в командной строке запустить программу «testd» па 11 процессорах. Монитор сообщает адрес вычислительной установки (fire.applmat.ru 194.226.48.7 ) и номер используемого TCP порта (1500). Именно эти данные необходимо ввести в диалоге установки соединения, который появляется при старте удалённой отладки в Пользовательском интерфейсе. На рис. 6 этот диалог находится слева. После нажатия кнопки "Connect" устанавливается связь между Пользовательским интерфейсом и Монитором, и начинается выполнение программы под отладчиком.
Выражения с использованием специальных функций и значений переменных могут использоваться при различных действиях по отладке программы: ? просмотр значений выражений в окне со значениями выражений (переменных); ? условие для точки остановки; ? условие для точки наблюдения.
При этом во всех случаях используется один и тот же синтаксис выражений, и поддерживается один и тот же набор специальных функций.
Для переменных, описанных в модуле на языке НОРМА, все выражения пишутся в терминах языка НОРМА
Применение общей схемы распределенных компонентов
Таким образом, для создания инструмента, позволяющего пользователю быстро, удобно и эффективно исследовать поведение параллельной программы по собранным в процессе её выполнения трассам, мы опять приходим к необходимости диалога с пользователем. Для создания такого комплекса, позволяющего пользователю со своего компьютера вести диалог с Системой исследования МРІ-программ, работающей на удалённом вычислительном комплексе, было решено использовать предложенную во второй главе общую схему организации распределенного комплекса для отладки и исследования удаленно выполняющихся параллельных программ.
В приведённой на рис. 7 схеме компонентов комплекса роль Модуля Сбора Информации в общей схеме распределенного комплекса для отладки и исследования удаленно выполняющихся параллельных программ выполняет специально созданная программа, названная Диалоговый Анализатор.
НОРМА с поддержкой Фортрана MPI, были доработаны для решения новых специфичных задач создаваемого Диалогового интерфейса для системы исследования МРІ-программ. В Пользовательском интерфейсе были реализованы новые типы окон для представления информации в удобном, структурированном виде и реализованы средства навигации как внутри окон, так и между окнами различных типов, средства частичного запроса информации (запрашивается только то, что в данный момент отображается). В Мониторе была реализована схема установки связи и обмен информацией с Диалоговым Анализатором.
Диалоговый Анализатор был создан с использованием имеющихся библиотек доступа к файлам трасс и библиотек анализаторов Средств отладки МРІ-программ в DVM-системе, и с использованием библиотеки связи компонентов для связи с Монитором. Диалоговый Анализатор выполняется на удалённом вычислительном комплексе - там, где находятся собранные в процессе выполнения трассы. Монитор также выполняется на удалённом вычислительном комплексе. После запуска Монитор устанавливает связь с Пользовательским интерфейсом, выполняющимся на компьютере пользователя, и затем запускает Диалоговый Анализатор и устанавливает связь с ним. Затем пары: Монитор и Пользовательский интерфейс, Монитор и Диалоговый Анализатор переходят в режим диалога: Монитор постоянно слушает Пользовательский интерфейс, а Диалоговый Анализатор - Монитор. Когда пользователь какими-либо действиями в среде Пользовательского интерфейса (например, вызов анализатора корректности, или пролистывание по экрану событий трассы) осуществляет запрос на получение информации, этот запрос передаётся Монитору, а Монитор передаёт его Диалоговому Анализатору. Диалоговый Анализатор выполняет запрос, и передаёт полученную информацию по цепочке обратно. Пользовательский интерфейс интерпретирует и отображает полученную информацию в удобном структурированном виде.
Может показаться, что Монитор является лишним звеном в этой цепочке, что Диалоговый Анализатор может напрямую обмениваться информацией с Пользовательским интерфейсом. Отчасти это так - во время диалога Монитор не выполняет никакой конструктивной работы. Но он играет важную роль при установке связи и её завершении, и выполняет для Диалогового Анализатора роль родительского процесса: Монитор стартует Диалоговый Анализатор, отслеживает его статус, контролирует внештатные ситуации. Кроме того, при разработки всего комплекса Диалогового интерфейса для системы исследования МР1-программ было решено полностью сохранить общую схему организации распределенного комплекса для отладки и исследования удаленно выполняющихся параллельных проірамм с прицелом на дальнейшее развитие комплекса и реализации схемы работы с несколькими параллельно выполняющимися Диалоговыми Анализаторами.
Диалоговый интерфейс для системы исследования МРІ-проірамм обеспечивает следующие возможности по отладке параллельных программ: Возможность просматривать трассы (в структурированном виде) и исходный текст программ, находящиеся на удаленной вычислительной системе, где производился счет. Возможность запуска анализатора корректности с различными параметрами и получение результата его работы в виде 2-х таблиц ошибок (общей и развёрнутой). При просмотре таблиц возможно применение различных сортировок и фильтров на отображаемые данные. Возможность запуска анализатора эффективности с различными параметрами и получение результата его работы в виде текстового протокола. Возможности по переходам. Каждому событию трассы может соответствовать какой-то пункт протокола анализатора эффективности, и наоборот - каждому пункту протокола анализатора эффективности соответствует одно или несколько событий трассы. И всем им соответствуют определенные строки исходного кода. В таблицах анализатора корректности каждой ошибке или предупреждению соответствуют события в трассе, строки исходного кода, стек вызовов процедур и функций и т.п. При анализе программы чаще всего необходимо исследовать все соответствующие друг другу элементы вместе. Для этого реализована возможность перехода от событий в трассах к соответствующим пунктам протокола анализатора эффективности и обратно, от пункта протокола - к событиям в трассе, из протокола и трасс - к соответствующим фрагментам исходного кода и обратно, от исходного текста к соответствующим событиям трассы и пунктам протокола, из таблиц - к соответствующим событиям, строкам исходного кода, показ стека вызовов процедур и функций и т.п. Вся история осуществлённых переходов сохраняется и позволяет производить навигацию вперед/назад по просматриваемой информации.