ИНТЕРАКТИВНАЯ ОТЛАДКА MPI-ПРОГРАММ
С ИСПОЛЬЗОВАНИЕМ ПАРАЛЛЕЛЬНОГО ОТЛАДЧИКА TDB

М.Р. Коваленко

В работе описаны основные принципы реализации компонентов программной системы интерактивной отладки MPI-программ TDB (ПС TDB), а так же методы отладки параллельных программ с использованием данной системы.

Разработка ПС TDB проводилась в ИПС РАН в рамках программы СКИФ.

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

Рис. 1. Архитектура ПС TDB.

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

Все остальные компоненты ПС TDB не являются постоянно функционирующими процессами и запускаются клиентским компонентом системы или непосредственно пользователем в процессе проведения сеанса отладки конкретного MPI-приложения.

Центральный сервер ПС TDB обеспечивает взаимодействие клиентского компонента с остальными компонентами ПС TDB - играя, в частности, роль программного мультиплексора пакетов TDB-протокола. Использование центрального сервера в качестве отдельного компонента системы позволило в значительной степени повысить степени открытости всей системы, облегчить создание различных реализаций клиента.

В контексте расширенной модели <клиент-сервер>, реализуемой в ПС TDB, центральный сервер выступает в роли сервера для клиентского компонента, и в роли клиента для других компонентов (первичного демона и серверов отладки).

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

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

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

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

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

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

Набор процессов MPI-приложения, присоединенных к одному серверу отладки, образует MPI-узел. Наряду с персональными командами над конкретными процессами сервер отладки способен производить и групповые операции над предопределенными группами процессов MPI-узла, поддерживая, таким образом, парадигму групп и групповых команд ПС TDB.

Клиентский компонент (клиент)-программная составляющая ПС TDB, обеспечивающая взаимодействие пользователя с ПС TDB в процессе интерактивной отладки. Клиентский компонент является критически важным для решения основной задачи ПС TDB-минимизации трудоемкости процесса отладки разрабатываемого MPI-приложения.

Рис. 2. Интерфейс GTDB. Иллюстрация сеанса отладки.

 

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

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

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

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

  • настройки свойств ПС TDB, в том числе и поддерживаемых MPI реализаций,
  • выбора вычислительных узлов для запуска приложения,
  • отображения состояния MPI-узлов/процессов отлаживаемого приложения, с возможностью выбора любого из них для индивидуальной работы по интерактивной отладке,
  • интерактивной работы с процессом отлаживаемого приложения,
  • отображения сообщений ПС TDB,
  • работы с точками останова,
  • ввода команд ПС TDB.

Набор команд инрерфейса командной строки (CLI-команд, от англ. "Command Line Interface") GTDB разработан таким образом, чтобы быть наиболее приближенным к набору команд системного отладчика gdb. Семантика, набор параметров и формат ответных сообщений стандартных команд отладчика, как правило, идентичны семантике, параметрам и сообщениям аналогичных команд отладчика gdb.

Клиент ПС TDB имеет также ряд характерных отличий, обусловленных спецификой ПС TDB как распределенного отладчика. Среди особенностей можно выделить: групповые команды, команды для настройки среды MPI, команды формирования, редактирования и просмотра списка вычислительных узлов, пригодных для запуска отлаживаемой задачи, а также команды, использующиеся при отладке специальных параллельных приложений, например, Т-приложений [1,2].

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

Пример сборки MPI-приложения (MPI-реализация-SCALI MPI):
# gcc -g -O0 hello-world.c -o hello-world -ltdb_mpi_scali -L/opt/scali/lib -lmpi

Ниже описываются основные функции GTDB на различных этапах сеанса отладки и соответствующие возможности предоставляемые пользователю.

1. Подготовка среды выполнения отлаживаемой задачи происходит с использованием графических компонентов: настройки свойств (см. рис. 3) и выбора узлов (см. рис. 4).
    Альтернативный способ подготовки среды выполнения-использование следующих CLI-команд: "shownodes", "getnodes", "addnode", "delnode", "printnodes", "set npn", "set args", "set mpi", "set mpiargs", "set runmode".

Рис. 3. Компонент настройки свойств ПС TDB

Рис. 4. Компонент выбора вычислительных узлов

2. Запуск задачи осуществляется коммандой "run".

3. Управление процессом интерактивной отладки просходит либо с использованием компонентов и элементов графического пользовательского интерфейса (кнопки, всплывающие меню), либо при помощи CLI-комманд.

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

    Наряду с ординарными командами, которые могут выполняться на группе процессов (next, print и др.), в ПС TDB реализованы специальные групповые команды, аналоги "break", "watch", "display", позволяющие оперировать объектами, заданными на каждом из процессов группы (например, breakpoint) как с единым объектом (см. рис. 5).

    Клиент GTDB позволяет производить отладку MPI-приложений в двух режимах: основном и "по процессам". В первом (основном) режиме пользователю дается возможность работать с активным(выбранным) процессом или группой, во втором-работать с процессами приложения индивидуально (см. рис. 5).

Рис. 5. Иллюстрация работы GTDB в режиме "Procs"

4. Завершение процесса отладки осуществляется коммандой "quit".

ЛИТЕРАТУРА:

  1. Abramov S.M. et al. Autotransformation of evaluation network as a basis for automatic dynamic parallelizing // Proceedings of NATUG Meeting "Transputer: Research and Application", 1993.
  2. С.М. Абрамов, А.И. Адамович, М.Р. Коваленко. Т-система - среда программирования с поддержкой автоматического динамического распараллеливания программ. Пример реализации алгоритма построения изображений методом трассировки лучей //  Программирование, 1999, 25 (2), с. 100-107.
  3.  А.И. Адамович, М.Р. Коваленко. TDB - открытая распределенная программная система интерактивной отладки MPI-программ: архитектурные решения и принципы реализации // Proc. Суперкомпьютерные системы и их применение SSA'2004. Труды Международной научной конференции, 26-28 октября 2004 г. Минск, ОИПИ НАН Беларуси Минск, с. 147-151
  4. Doreen Cheng and Robert Hood. A Portable Debugger for Parallel and Distributed Programs // Proceedings of the 1994 conference on Supercomputing.
  5. Etnus TotalView delivers the features, flexibility, and power you need to debug today's code // URL: http://www.etnus.com/Support/papers/TotalViewBrochure.pdf
  6. The Distributed Debugging Tool. An Overview of Features //  URL: http://www.streamline-computing.com/ddt-overview.pdf