Volgograd

Волгоград Linux User Group

Организована 23 ноября 2002 года

Проект заморожен Птн Июл 6 02:11:14 MSD 2012


Вход:  Пароль:  

MpichMiniHowTo




MPICH-Mini-HowTo

Параллельное программирование в ALT Linux Master 2.0: Как настроить и запустить



Автор: Skyrex (skyrex@hotbox.ru)



Назначение: краткие заметки по настройке и использованию пакета MPICH в
дистрибутивах ALT Linux Master 2.0 (2.2)
Лицензия: GPL
Замечание: Статья изначально рассчитывалась на людей желающих, но в силу
не знания Linux, не могущих использовать MPICH



Что здесь есть (Оглавление):
1. О чем это
2. Настройка
3. Использование
4. Пример
5. Трогательное прощание



1. О чем это.

MPICH (MPI Chameleon) – одна из свободно расспростроняемых (под лицензией
GPL) реализаций стандарта MPI (Message-Passing Inteface=Интерфейс Передачи
Сообщений), работающию на многих платформах, использующая различные
коммуникационные интерфейсы (включая TCP/IP). Специализация MPI
обеспечивает переносимость программ на уровне исходных кодов, так что не
не надо бояться, что долгими ночами писанная вами дома программа не сможет
быть использованна на кластере доступного вам ВЦ...
В данном документе я не буду рассматривать спецификацию MPI, особенности
реализации и уж тем более программирования на различных платформах.
Я расскажу как настроить MPICH в дистрибутиве ALT Linux Master 2.0
(или,что может быть более точно, как это у меня получилось... Или
получалось... Или получиться... )



2. Настройка.
При установки Master'a с CD – не поленись – поставь галочки напротив
* mpich-doc, подробная документация с описанием стандарта и процесса
инсталяции, к несчастью не рассчитанной на Master 2.0
* mpich, собственно, сам пакет.
* mpicc, обертка(wrapper) для использующих C++ (без mpich смысла ставить
нет, тк без него не работает).
Если не вспомнил вовремя – не беда:
1. Входишь под root'ом и для начала делаешь apt-cdrom add, и скармливаешь
железяке, живущей по адресу /mnt/cdrom все диски с дистрибутивом
(делается пару минут, а спасает часы...).
2. apt-cache search mpich для того чтобы получить список пакетов так или
иначе связанных с mpich.
3. И ставишь их поодному командой apt-get install pkg_name, где pkg_name
– название пакета, выданное тебе на шаге 2.
Теперь у тебя на машине стаит mpich. Слушай где :
* /usr/share/mpich
      • Makefile.sample – пример make-файла
      • mashines.LINUX – список хостов на которых будет выполняться твоя
        программа (можешь считать что хост – это компьютер подключенный в
        сеть под некоторым именем)
      • mashines.sample – те же яйца вид сбоку
* /usr/share/doc/mpich-doc-1.2.2.2 Куча файлов с документацией
      • install.ps.gz – файл с описанием процесса инсталяции (можно
        пролистать)
      • guide.ps.gz – руководство пользователя, содержит кучу
        полезнительной информации, желательно с этим документом
        ознакомиться
      • mpiman.ps – описание стандарта, функций, структур, etc... Чистой
        воды man загнанный в ps
      • ./www/index.html – man в формате html
      • ./examples/ – кучка примеров
* /usr/bin – здесь, как и положено, живут скрипты и программы которые
компилируют и запускают твои шедевры
Опишем теперича саму «настройку».
1. Для нормального фунциклирования MPICH требует наличия rsh (remote
shell), который как правило администраторами не ставиться, т.к.
используется всяко разными злоумышлинниками для полученния
несанкционированного доступа к системе, так что даже не проси админа о
его установке, лучше сделать символьную ссылку /usr/bin/rsh на
/usr/bin/ssh.
Если ты – сам себе админ (поставил себе Линух дома и смотришь на него
круглыми от восторга и изумления глазами) то делается это командой
ln -s /usr/bin/ssh /usr/bin/rsh
либо, как вариант, делаешь ссылочку в директории ~/bin
2. Ты должен определиться со списком машин на которых будешь запускать
свою программу. Учти: к этим машинам у тебя должен быть доступ по SSH.
Создай (если нет) в папке ~/.ssh файлы id_dsa и id_dsa.pub c помощью
программы ssh-keygen. Делается это командой:
ssh-keygen -t dsa,
на все предложения ввести что либо нажимай «Ввод». Создай файл
~/.ssh/authorized_keys2 и скопируй в него содержимое файла
id_dsa.pub, после чего подсоединись поочерёдно ко всем хостам из
определенного тобой списка.
3. Пьешь пиво или минеральную воду; смахиваешь, тресущимися от напряжения
руками, холодный пот со лба...
Настроил.



3. Использование.
Перепишем пример /usr/share/doc/mpich-doc-1.2.2.2/examples/basic/cpi.c
себе в рабочию директорию. Скомпилируем файл с помощью скрипта mpicc:
mpicc cpi.c -o cpi
Получим исполнимый файл cpi, который мы должны поместить на машины нашего
кластера. Далее...
Есть два способа запускать программу:
1. Для ленивых.
Для начала узнай имена хостов к которым ты будешь подключаться.
Делается это с помощью команды hostname. Список хостов занеси в файл
/usr/share/mpich/mashines.LINUX, (необходимо иметь права root'a)
предварительно удалив все то, что там было не закоментированно. Если в
список попала многопроцессорная машина можешь указать после имени
хоста через двоеточие число процессоров. Например, у нас есть 4х
процессорный монстр от шараги с ярким названием Sun, команда hostname
выдала тебе super.puper.sun.stoit.na.rabota.blin.
Значит пишешь в файле: super.puper.sun.stoit.na.rabota.blin:4
Запускаешь программу командой:
mpirun -np N /full/path/to/program/program_name
Здесь
    • -np Число, следующие после данного ключа, определяет число
      запускаемых процессов, в нашем случае процессов – N
    • /full/path/to/program/program_name Необходимо указать полный путь
      на программу (полный – значит от корня ФС). Учтите, что при
      данном методе запуска, путь к программе на всех машинах должен
      быть одинаковым!
Замечание для тех, кто работает дома. Поскольку запускать программу
тебе придется на одной единственной машине, для того чтобы программы
выполнялись тебе придется залезть под root'ом в файл
/usr/share/mpich/mashines.LINUX и удалить все то, что там не
закомментированно, после чего вписать в конец файла одну единственную
строчку: localhost, после чего тебе нужно хотя бы раз подключится по
ssh к самому себе, что делается командой:
ssh localhost.
И запускаешь так же, как было описанно выше.
2. Для предусмотрительных.
Чаще бывет так, что программа твоя на разных компьютерах находиться в
разных каталогах, либо ты не имеешь доступа с правами root'a к файлу
/usr/share/mpich/mashines.LINUX. Ддя того, что бы запустить программу
в такой ситуации тебе понадобиться PG-файл. PG-файл (Progroup File) -
это текстовый файл содержащий информацию о том на каком хосте, сколько
и каких программ должно выполняться при запуске вашей MPI программы.
Данный файл имеет следующую структуру:
hostname NP /full/path/to/program/program_name
Здесь
    • hostname – имя хоста, полученное с помощью команды hostname,
    • NP – количество процессов, запускаемых на данном хосте,
    • /full/path/to/program/program_name – полный путь и имя программы,
      запускаемой на данном хосте.
Теперь программа запускается следующей командой:
mpirun -p4pg /full/path/to/pg_file/pg_file /full/path/to/program/program_name
(либо, в случаи, если pg-file и файл program_name находяться в текущем
каталоге:
mpirun -p4pg ./pg_file ./program_name)
    • -p4pg – ключ указывающий что мы будем использовать PG-файл,
    • /full/path/to/pg_file/pg_file – полный путь к PG-файлу,
    • /full/path/to/program/program_name – полный путь к исполнимому
      файлу, который должен выполняться на текущем хосте. Дело в том,
      что mpirun по умолчанию выполняет один процесс на машине где
      запускают mpirun.
В качестве примера приведу текст PG-файла запускающего три процесса
cpi
на localhost:
localhost 0 /home/skyrex/cpi
localhost 2 /home/skyrex/cpi
Здесь 0 в кол-ве процессов означает главный(master) процесс



4. Пример.
Если нужны еще примеры – ищи их в
/usr/share/doc/mpich-doc-1.2.2.2/examples/



5. Прощание.
Автор (те Я), не несет ответственности за все те неприятности в которые вы
угодите после ознокомления с данным текстом(к примеру: выход системы из
строя, облысение, заболевание сифилисом... etc). Информация приведенная в
статье исползуется вами на свой страх и риск.
Замечания и пожелания – пишите.
Удачи!



28.04.2003, Skyrex.


[ / Category Programming ]