Параллельные вычисления в ИММ УрО РАН
|
|
Открытая платформа отладки параллельных программА.С.Игумнов, ИММ УрО РАНРабота выполнена при подержке гранта РФФИ 01-07-90215 Отладка параллельных программ является особым искуством, включающим в себя как традиционную отладку последовательных компонентов программы, так и отладку взаимодействия между компонентами. С ростом числа процессов, составляющих программу, становится затруднительно использовать традиционные отладчики, хотя бы в силу того, что программист не в состоянии оперировать данными, разбросанными по десяткам процессоров. Просмотрев обзоры отладчиков для параллельных программ, например [1], можно придти к неутешительному выводу. В списке присутствует очень немного параллельных отладчиков общего назначения. Чаще всего упоминается распространяемый на коммерческой основе TotalView [2] и разработанный в NASA P2D2, который в настоящий момент недоступен для использования сторонними организациями. Кроме этих двух отладчиков можно найти специализированные отладочные программы, такие как, средства визуализации очередей сообщений MPI в реальном времени MQM [4] и средство визуализации сложных структур данных GUARD [5] использующее отладочные механизмы для доступа к оперативной памяти процессов. Таким образом, на настоящий момент, не существует свободно доступного отладчика параллельных программ, который бы можно было модифицировать под конкретные потребности программиста. Все перечисленные выше отладчики используют двухзвенную структуру. В качестве клиентов выступают последовательные отладчики с интерфейсом командной строки, такие как gdb, которые взаимодействуют с сервером отладки, реализующим ту или иную степень агрегации данных и интерфейс пользователя. Сервер TotalView предлагает также програмный интерфейс на языке TCL для написания отладочных скриптов. Предлагается разработать отладчик, который бы сохраняя схему "последовательные отладчики - сервер отладки" , развивал ее в следующих направлениях:
Таким образом, для системного программиста процесс отладки будет представлять написание специализированной программы например на языке Perl, возможно интерактивной, а возможно и нет. Для программиста прикладного, отладка будет представляться в более традиционном стиле. Элементы пользовательского интерфейса скроют от него расширяемость скриптового ядра, предоставив привычные понятия контрольных точек, переменных, очередей сообщений. При программировании сервера отладки, программисту должны быть доступны объекты следующих типов:
В минимальной реализации, сервер должен создать для каждого запущенного процесса объект реализующий интерфейсы всех перечисленных типов. Более сложные объекты, такие как группа процесов исполняющих одинаковый код, могут быть реализованы на скриптовом языке. Надо заметить, что поскольку группировка процессов очень важна, то скрипты ее реализующие должны входить в стандартную конфигурацию сервера. Создание группы процессов позволяет управлять этой группой как единым целым - останавливать и запускать все процессы группы, одновременно устанавливать и снимать контрольные точки и т.п. Кроме управляющих групп, обязательно должны присутствовать и объекты-условия, определяющие, что групповое условие выполняется в том случае, когда некоторое условие выполнено для всех процессов группы, или условие выполнилось хотя бы для одного процессом из группы. Объекты-данные являются очень мощным средством для наращивания функциональности сервера. Имея доступ к оперативной памяти всех процессов, мы можем с одной стороны отображать и анализировать такие важные стандартные данные, как очереди сообщений MPI, а с другой стороны, даем программисту инструмент для отображения любых нестандартных структур данных. Базовый пользовательский интерфейс должен предоставлять, как минимум, стандартные возможности последовательного отладчика, такие как, управление контрольными точками, просмотр стека и памяти, а так же возможности по взаимодействию с группами процессов. Пользовательский интерфейс должен иметь модульную структуру и легко наращиваться для внедрения дополнительных возможностей. Например, одновременно с написанием скрипта извлекающего даные о текущем состоянии очереди MPI сообщений, необходимо создать интерфейс и возможно не один, для визуализации этих данных. В настоящий момент, в ИММ УрО РАН идет работа по созданию макетной реализации сервера отладки для проверки вышеизложенных концепций. Ссылки
|