Руководство пользователя для MPICH, переносимой реализации MPI версия 1.2.1

William Gropp и Ewing Lusk
перевод Балуева А.Н. (мат-мех факультет СПбГУ)

Оглавление

  • 6. ОТЛАДКА ПРОГРАММ MPI С ПОМОЩЬЮ ВСТРОЕННЫХ СРЕДСТВ.

    6. Отладка программ MPI с помощью встроенных средств.

    В начало страницы

    Хорошо известно, что отладка параллельных программ очень трудна, и мы тоже не волшебники в разрешении этой проблемы. Тем не менее мы встроили в mpich несколько средств, которые можно использовать для отладки программ MPI.

    6.1 Обработчики ошибок.

    В начало страницы

    Стандарты MPI содержат механизм для установки пользователем своего способа обработки ошибок. Кроме того, они имеют два предопределенных средства, MPI.ERRORS.RETURN и MPI.ERRORS.ARE.FATAL. Мы также включили в библиотеку MPE еще два обработчика ошибок, помогающих использовать dbx при отладке программ MPI, а именно MPE.Errors.call.dbx.in.xterm и MPE.Signals.call.debugger.

    Эти обработчики помещаются в каталоге MPE. Параметр конфигурации –mpedbg включает эти обработчики в обычную библиотеки MPI и позволяет с помощью

    аргумента –mpedbg в командной строке встраивать MPE.Errors.call.dbx.in.xterm в качестве обработчика ошибок по умолчанию (вместо MPI.ERRORS.ARE.FATAL).

    6.2 Аргументы командной строки для mpirun.

    В начало страницы

    Команда mpirun обеспечивает некоторую помощь в запуске программ с отладчиком. mpirun –dbg=!name of debugger? –np 2 program запускает программу на двух машинах, причем на локальной машине она исполняется под управлением указанного отладчика. Имеются 5 сценариев отладки, включенных в mpich, которые помещаются в каталог mpich/bin после выполнения make. Они имеют имена mpirun.dbg.%d, где %d можно заменять на dbx, ddd, gdb, totalview или xxgdb. Соответствующий сценарий активизируется при использовании параметра –dbg в mpirun.

    6.3 Аргументы MPI для прикладной программы.

    В начало страницы

    Они в настоящее время не документированы, некоторые из них требуют указания в параметрах конфигурации (такие как –mpipktsize and –chmemdebug).

    -mpiversion Этот параметр полезен для определения того, как ваша установка mpich была конфигурирована и какую точно версия она представляет. –mpedbg Если произошла ошибка, запускает xterms, связанный с процессом, в котором произошла ошибка. Требует конфигурации mpich с –mpedbg и работает только на некоторых системах рабочих станций.

    -mpiversion Печатает версию и аргументы конфигурации используемой реализации mpich.

    Перечисленные аргументы предназначены для программы, не для mpirun. То есть, например,

    mpirun –np 2 a.out –mpiversion

    6.4 Аргументы p4 для устройства ch p4.

    В начало страницы

    При использовании устройства ch.p4, некоторые аргументы командной строки могут использоваться для управления поведением программы.

    6.4.1 Отладка на p4.

    В начало страницы

    Если в вашей конфигурации mpich использовано –device=ch.p4, то некоторые из отладочных возможностей для p4 доступны для вас. Наиболее полезны из них аргументы командной строки для прикладной программы. Так

    mpirun –np 10 myprog –p4dbg 20 –p4rdbg 20 приводит к трассировочной информации уровня 20, выдаваемой во время вычисления на stdout. Сведения о том, что и на каком уровне печатается см. в Руководстве пользователя p4 1.Если указать –p4norem в командной строке, то mpirun не будет фактически запускать процессы. Главный процесс напечатает сообщение, указывающее, как пользователь может это сделать. Назначение этого параметра – дать возможность

    пользователю запускать отдаленные процессы, например, под управлением своего любимого отладчика. Этот параметр имеет смысл только, когда процессы должны запускаться вдалеке, как в сетях рабочих станций. Заметим, что это – аргумент для программы, не для mpirun. Например, для выполнения таким образом программы myprog нужно выполнить

    mpirun –np 4 myprog –p4norem

    6.4.2 Установка рабочего каталога для устройства p4.

    В начало страницы

    По умолчанию рабочий каталог для процессов, выполняемых вдалеке на устройствах ch.p4 – тот же самый, что и для исполнимых программ. Для прямого указания этого каталога используйте –p4wdir следующим образом:

    mpirun –np 4 myprog –p4wdir myrundir

    6.5 Аргументы командной строки для прикладных программ.

    В начало страницы

    Аргументы в командной строке, которые следуют за именем прикладной программы и не предназначены для системы mpich (не начинаются с –mpi или –p4), передаются ко всем процессам прикладной программы. Например, если вы напишите

    mpirun –echo –np 4 myprog –mpiversion –p4dbg 10 x y z

    то –echo –np 4 будет интерпретироваться командой mpirun (выдать эхо и запустить 4 процесса), –mpiversion будет интерпретироваться системой mpich

    (каждый процесс напечатает информацию о конфигурации), –p4dbg 10 будет интерпретироваться устройством p4. Если ваша версия была сконфигурирована с –device=ch.p4 , это сведется к установке уровня 10 для отладки на p4 и передаче x y z прикладной программе. Добавим, что сценарий MPI Init вычеркивает не прикладные аргументы, так что в обращении к MPI Init в вашей программе на Си вектор аргументов argv будет содержать только myprog x y z , т.е. ваша программа может обрабатывать аргументы своей командной строки обычным способом.

    Нельзя передавать различные аргументы командной строки разным процессам.

    6.6 Запуск заданий с отладчиком.

    В начало страницы

    Обращение к mpirun с параметром –dbg=!name of debugger? побуждает процессы выполняться под контролем указанного отладчика. Например, если ввести

    mpirun –dbg=gdb или mpirun –dbg=gdb a.out ,

    то это вызовет сценарий mpirun.dbg.gdb, находящийся в каталоге mpich/bin. Этот сценарий захватывает нужные аргументы, вызывает отладчик gdb и запускает

    первый процесс под управлением gdb там, где это возможно. Имеются 4 сценария отладки: gdb, xxgdb, ddd и totalview. Они могут нуждаться в редактировании в

    зависимости от вашей системы. Имеется еще отладочный сценарий dbx, но он

    всегда требует редактирования, поскольку в нем отладочные команды различны для as the debugger commands for dbx varies разных версий. Названный параметр можно использовать для вызова и других отладчиков, например, –dbg=mydebug. Для этого нужно только написать сценарный файл mpirun.dbg.mydebug, в таком же формате как для включенных в систему отладчиков и поместить его в каталог mpich/bin.

    6.7 Запуск отладчика, когда случится ошибка.

    В начало страницы
    Введите
    mpirun … a.out –mpedbg
    
    (требует постройки mpich с параметром –mpedbg;
    используйте –mpiversion и надейтесь на параметр –mpedbg).
    

    6.8 Подключение отладчика к выполняемой программе.

    В начало страницы

    На кластерах рабочих станций часто удается подключить отладчик к выполняемому процессу. Например, отладчик dbx часто принимает идентификатор процесса (pid), который вы можете получить по команде ps. Форма обращения или

    dbx a.out pid или dbx –pid pid a.out

    Можно также подключить к исполняемой программе отладчик TotalView (см. ниже раздел 7.3).

    6.9 Сигналы.

    В начало страницы

    Вообще говоря, пользователям рекомендуется избегать использования сигналов в программах MPI. На странице Руководства, относящейся к MPI.Init, описаны сигналы, используемые в реализации MPI. Они не должны изменяться пользователем. Иногда можно изменить сигнал до вызова MPI.Init. В таких случаях ваш обработчик сигналов будет вызван после того как реализация MPICH подействует на сигнал. Например, если вы хотите изменить свойство SIGSEGV печатать сообщение, вы можете установить такой обработчик сигнала до вызова MPI.Init. С такими устройствами как ch.p4, которые обрабатывают SIGSEGV, это может привести к тому, что ваш обработчик будет вызван после того, как этот сигнал обработает MPICH.

    6.10 Соответствующие средства.

    В начало страницы

    Масштабируемые средства Unix (сокращенно SUT) представляют набор средств управления для сетей рабочих станций, таких как MPP. Они включают в себя

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

    6.11 Содержимое библиотечных файлов.

    В начало страницы

    Каталог, содержащий библиотечный файл MPI (`libmpich.a'), содержит несколько дополнительных файлов. Вот их краткий обзор.

    libmpich.a Библиотека MPI (MPI.Xxxx) файлов libfmpich.a. Только Fortran использует эти подпрограммы MPI.

    libpmpich.a Профилирующая версия (PMPI.Xxxx). Если система поддерживает слабые символы weak symbols ?, то этот файл может служить связью с libmpich.a.

    libf90mpich.a Поддержка в модуле MPI для Fortran 90.

    libf90mpichnc.a Поддержка для подмножества «no-choice» в модуле MPI.

    libmpe.a Графика MPE, регистрация и другие расширения (PMPE.Xxxx) для libmpe.

    nompi.a Графика MPE без MPI mpe

    prof.o Примеры профилирующей библиотеки (C) mpe

    proff.o Примеры профилирующей библиотеки (Fortran)


<<< Оглавление Страницы: 6  7 >>>