Руководство по установке mpich

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

Оглавление

  • 6. Выполнение программ MPI.

    6. Выполнение программ MPI.

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

    Чтобы сделать рабочие программы для параллельных машин столь же переносимыми как и их запись, окружение, поставляемое вместе с mpich, содержит сценарий для этого. Это – команда mpirun, находящаяся в каталоге mpich/bin. Некоторые из каталогов уже имеют символьную связь с этой командой, но все-таки нужно указать путь к ней (в предположении, что вы используете оболочку Си):

    set path=($path /home/me/mpich/bin)

    Детали о mpirun можно найти в разделе 14.2.

    Если вы собираетесь работать на сети рабочих станций , вам будет нужен файл machines.xxxx в mpich/util/machines; см. подробности в разделе 6.1. Системы, в которых используются различны авто монтировщики файловых систем, могут потребовать небольших изменений в этих программах, как написано в разделе 6.1.1.

    Некоторые простые программы MPI строятся во время процесса компиляции. Они находятся в каталоге mpich/examples/basic и содержат программу на Си и на Фортране для оценки ss. Перейдите в этот каталог и выполните

    mpirun –np 4 cpi для запуска версии на Си или mpirun –np 4 fpi для выполнения версии на Фортране.

    Дойдя до этой иочки, вы минимально проверите свою установку mpich. Можно также проверить производительность MPI на вашей системе. Грубая проверка состоит в прогоне программы systest, также находящейся в каталоге examples/basic. Для этого выполните

    make systest

    mpirun –np 2 systest По поводу более тщательной проверки см. раздел 13.

    6.1 Специальные советы для работы на сетях рабочих станций.

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

    Для работы на сетях рабочих станций, нужно указать каким-нибудь способом хост-имена машин, на которых хотите работать. Это можно сделать несколькими способами, которые в деталях описаны в Руководстве пользователя. Эдесь мы только кратко скажем об этом.

    Самый простой путь – отредактировать файл mpich/util/machines/machines.xxxx, чтобы он содержал имена машин с архитектурой xxxx. Название xxxx отвечает архитектуре, указанной при конфигурации mpich. Тогда при всяком выполнении mpirun будут выбираться требуемые номера хостов.

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

    (Здесь нет никаких хитростей, хосты начинают выбираться сверху). Чтобы исполнять все процессы MPI на одной рабочей станции, просто укажите в файле все линии одинаковыми. Обычный файл machines.solaris выглядит как, например, mercury venus earth mars earth mars

    Имена должны поступать в том же формате как на выходе команды hostname. Например, если результат хост-имени на earth будет earth.my.edu (и так же для других имен), то машинный файл должен быть mercury.my.edu

    venus.my.edu earth.my.edu mars.my.edu earth.my.edu mars.my.edu

    Для выполнения последовательности тестов в examples/test вам необходим машинный файл с по крайней мере пятью линиями в нем . Это для однородных сетей. Разнородные сети рассмотрены в Руководстве пользователя.

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

    mercury venus earth mars:2 earth mars:2

    6.1.1 Работа с автомонтировщиками.

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

    Автомонтировщики – это программы, которые динамически делают доступными необходимые файловые системы. Хотя это и очень удобно, многие автомонтировщики не в состоянии распознавать имена файловых систем, которые генерируют сами автомонтировщики. Например, если пользователю требуется файл `/home/me', автомонтировщик может вообразить, что нужно смонтировать такую файловую систему и сделает это посредством `/tmp.mnt/home/me'. Если к несчастью автомонтировщик на другой системе увидит `/tmp.mnt/home/me' вместо `/home/me', он может не сообразить, что это абсурдная

    файловая система. Это не было бы такой проблемой, если бы команды вроде pwd возвращали `/home/me' вместо `/tmp.mnt/home/me'; к несчастью, очень легко указать путь, который автомонтировщик должен, но не сможет распознать.

    Чтобы разделаться с этой проблемой, конфигурация позволяет вам указывать программу-фильтр, если конфигурируете с параметром –automountfix=PROGRAM,

    где PROGRAM есть фильтр, который читает путь к файлу из стандартного входа, производит необходимые изменения и пишет результат в стандартный выход. mpirun использует эту программу для нахождения необходимых файлов. По умолчанию, значение PROGRAM есть sed –e s@/tmp.mnt/@/@g Это использует команду sed для очистки строки /tmp.mnt от имени файла. Простой сценарий sed подобный этому может использоваться до тех пор, пока он не затронет кавычек (простых или двойных) или % (это подействует на команды оболочки конфигурации, которые и производят замену). Если нужна более сложная обработка, используйте отдельную сценарную оболочку или программу.

    Как другой пример, некоторые системы генерируют пути подобно следующему

    /a/thishost/root/home/username/….

    что действует только на машину thishost, или так:

    /u/home/username/….

    что действует везде. В этом случае параметр конфигурации

    -automountfix='sed –e s@/a/."*/home@/u/home@g' обеспечит для mpirun получение нужного имени.

    6.1.2 Ускорение запуска заданий.

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

    При пользовании устройством ch.p4 можно ускорить процесс запуска заданий с помощью защитного сервера (secure server). Этот сервер – программа, исполняемая на машинах, указанных в файле `machines.xxxx'. Она позволяет программам стартовать быстрее. Имеются два способа установки сервера: так, что только один пользователь может им пользоваться, и так, что он будет доступен всем пользователям. Для установки защитного сервера для одного пользователя не требуется никаких специальных привилегий.

    Чтобы воспользоваться защитным сервером, нужно выполнить следующие действия:

    1. Выбрать порт, т.е. номер, который вы будете использовать для идентификации сервера (различные номера портов можно использовать для разрешения работы многих серверов). Полезно выбирать номера больше 1000. Если вы назовете номер, который уже использован, сервер прекратит работу и вы должны будете выбрать другой номер. На многих системах имеется команда rpcinfo для определения используемых портов (или зарезервированных). Например, чтобы найти порты, используемые в хосте mysun, выполните

    2. Если вы используете устройство ch.p4, постройте защитный сервер так: в каталоге верхнего уровня выполните

    make serv.p4

    После этого шага выполнимым каталогом для защитного сервера будет тот же, что и для сценариев MPI и исполнимых программ. Имя сервера будет serv.p4.

    3. Запустите защитный сервер сценарием `sbin/chp4.servs'. Для этого можно

    bin/chp4.servs –port=n –arch=$ARCH

    Здесь используются дистанционные команды оболочки (rsh, remsh, или ssh) для старта серверов; если вы не можете использовать дистанционные команды, вы должны зарегистрироваться (log into) в каждой системе, в которой хотите запустить защитный сервер, и запустить его вручную. Команда запустить индивидуальный сервер с портом 2345 выглядит так

    serv.p4 –o –p 2345 &

    Если вы уже используете защитный сервер, употребляйте эту же командную строку. Например, если избрали порт номер 2345 и работаете на Solaris, то нужно выдать команду

    sbin/chp4.servs –port=2345 –arch=solaris

    Сервер ведет журнал своих действий в файле с именем `Secure.Server.Log.xxxx' в текущем каталоге, где `xxxx' есть идентификатор процесса запуска сервера (заметим, что сервер может исполняться как отпрыск этого начального процесса).

    4. Чтобы воспользоваться защитными серверами на устройстве ch.p4, нужно сообщить mpirun номер порта. Это можно сделать двумя путями. Первый состоит в передаче mpirun параметра –p4ssport n. Например, если порт есть 2345 и вы хотите исполнять cpi на четырех процессорах, выполните

    mpirun –np 4 –p4ssport 2345 cpi

    Другой способ информирования mpirun о защитном сервере – воспользоваться переменными окружения MPI.USEP4SSPORT и MPI.P4SSPORT. В Си-оболочке это можно сделать так:

    setenv MPI.USEP4SSPORT yes setenv MPI.P4SSPORT 2345

    Значение MPI.P4SSPORT указывает порт, с которым вы запускаете защитные серверы. Если заданы эти переменные, никакие другие параметры не нужны для mpirun. Заметим, что когда установлена MPICH, защитный сервер и команды копируются в каталог `bin', так что пользователи могут запускать свои собственные копии сервера. Об этом говорится в Руководстве пользователя.

    6.1.3 Остановка сервера.

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

    Чтобы остановить серверы, нужно убить их процессы. Это можно сделать спомощью Scalable Unix Tools 8 командой

    pfps –all –tn serv.p4 –and –o $LOGNAME –kill INT

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

    ps auxww – egrep «$LOGNAME.*serv.p4"Б

    если пользуетесь BSD-style ps, или

    ps –flu $LOGNAME – egrep 'serv.p4',

    если пользуетесь системой System V-style ps. Система System V style будет работать только если у команды короткое имя; система System V ps дает вам только первые 80 знаков имени команды, и если она начинается с длинного (хотя и правильного) пути, имя команды может быть утеряно. Другой подход описан в разделе 6.1.4.

    6.1.4 Управление серверами.

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

    Экспериментальная программа perl5 обеспечивает помощь в использовании защитных серверов p4. Она называется chkserv и расположена в каталоге sbin. Ее можно использовать для проверки того, что серверы работают, для запуска новых серверов или остановки ранее запущенных. Перед употреблением этого сценария вам может понадобиться его редактирование. Проверьте, указаны ли в нем правильные значения для serv.p4, portnum, и machinelist; может также понадобиться установить первую строку вашей версии perl5.

    Для проверки статуса ваших серверов используйте

    chkserv –port 2345

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

    chkserv –port 2345 –restart

    Это не приведет к рестарту серверов, которые уже работают; это можно использовать ежедневно утром для проверки того, что серверы в порядке. Заметим, что при этом используется та же дистанционная команда оболочки, которую нашла конфигурация; Если вы не можете использовать эту дистанционную команду для запуска процессов на отдаленных системах, вам придется перезапускать серверы вручную. В таких случаях можно использовать выход из chkserv –port 1234 чтобы увидеть, какие серверы нужно перезапустить.

    chkserv –port 2345 –kill

    Эта команда находит все работающие серверы и останавливает их. Она не нуждается в rsh и действует на любой системе.

    Все это – экспериментальное обеспечение. Если у вас есть замечания или предложения, посылайте их в mpi-bugs@mcs.anl.gov.

    6.1.5 Употребление системных демонов MPD.

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

    Новая система MPD описана в документе, дополняющем настоящий и называемом Руководство пользователя для MPICH.

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

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

    При эксплуатации устройств ch.shmem или ch.lfshmem с системой V разделения памяти процессы, которые заканчиваются аварийно (например, из-за нарушения сегментации) могут оставить после себя семафоры системы V или не освободить сегменты совместной памяти. Поскольку обычно имеется ограниченное количество таких объектов, их важно восстановить. В Unix команда ipcs используется для перечисления отведенных семафоров и сегментов совместной памяти, а команда ipcrm может использоваться для их освобождения. Сценарий `bin/cleanipcs' может идентифицировать и убирать все IPS системы V, принадлежащие вызвавшему их пользователю IPC; для этого служит команда bin/cleanipcs


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