Видео смотреть бесплатно

Смотреть жесткое видео

Официальный сайт fresher 24/7/365

Смотреть видео бесплатно

al1e 31.01.2010 22:51

How-to`sВычислительный кластер на базе Slackware и LAM/MPI

Статья "заказная", на написание сподвиг многоуважаемый digiwhite своим коментом.

Хочу сразу сказать, что матерял не свежий. реализовывал давно и по молодости лет.

Сначала немного лирики, в которой опишу как пришли к окончательному варианту архитектуры кластера.

Дело было вечером, делать было нечего и я с радостью принял предложение одного знакомого помочь ему с настройкой вычислительного кластера. Как раз в тот момент попалась под руку статья в журнале "Системный администратор" за какой-то последний месяц 2007 года. В статье подробно и не сложно был описан процесс поднятия бездискового вычислительного кластера на базе Red Hat 5 Enterprise. Сказано-сделано, ставлю свеже-выкачанный CentOS как точную копию описанной в статье красной шапки и... Не тут то было(((. Вроде и все то и менюшки в гуе те, но образ для загрузки системы по сети не создается. Какие ошибки выдавал CentOS не вспомню, дело было года 2 назад. Пришли к решению использовать Slackware 12, последний на тот момент релиз. По сети слака бойко грузилась, все четко. Помог how-to самого Патрика с описанием працесса установки оси через сеть, но тут возник другой вопрос - как подгрузить нужные мне библиотеки для кластера по сети, и плюс ко всему, у меня не получалось собрать ядро для рабочей системы вместо того, что использовался для инсталяции, были косяки с initrd. Покумекав немного решили отказаться от бездискового варианта, больно молоды мы были для него=), не опытны=))). Так же отказались от dhcp/dns в силу известности точного количества используемых узлов.

Все настройки на всех задействованных машинах идентичны, отличия только в сетевых именах и IP-адресах. Соотвественно имя конкретного узла прописываем в /etc/HOSTNAME, например: n01.cluster. Для маршрутизации надо подправить /etc/hosts, например:

1
2
3
127.0.0.1 localhost
192.168.1.1 n01.cluster
192.168.1.2 n02.cluster



Также необходимо прописать в /etc/hosts.equiv именна узлов, которым будет разрешенн удаленный доступ. Для примера выше, этот файл будет выглядеть следующим образом:

1
2
3
localhost
n01.cluster
n02.cluster



Думаю с этим проблем не должно возникнуть.

Так как сеть у нас стабильна и статична, то я переписал /etc/rc.d/rc.inet1, упростив его до безобразия:

1
2
3
4
5
#! /bin/bash
/sbin/ifconfig lo 127.0.0.1
/sbin/ifconfig eth0 192.168.1.1
/sbin/route add -net 127.0.0.0/8 lo
/sbin/route add default gw 192.168.1.1



Еще один момент, кластер должен запускаться с права пользователя, на root'а он сругается, посему создаем для этих целей специального юзера. Домашнюю директорию вновь созданного юзера надо расшарить по NFS, сотвественно дописываем в /etc/exports следующую строчку:

1
/home/USERNAME 192.168.1.0/24(ro,sync,no_root_squash)



Ну и запускаем/перезапускаем NFS:

1
#/etc/rc.d/rc.nfsd start



(По умолчанию в слаке NFS не запущен и скрипт запуска не имеет атрибута исполнения, поправляется командой #chmod +x /etc/rc.d/rc.nfsd)
Для работы LAM/MPI библиотек необходима удаленная консоль, для чего раскоментируем в файле /etc/inetd следующие строчки:

1
2
shell stream   tcp     nowait  root    /usr/sbin/tcpd  in.rshd -L
login stream tcp nowait root /usr/sbin/tcpd in.rlogind


И сотвественно перезагружаем inatd:

1
#/etc/rc.d/rc.inetd restart



Теперь поколдуем с ssh. Для нормальной работы кластера и соблюдения всех мер предосторожности, настроим безпарольный доступ для всех узлов сети:
Осуществляем вход с консоли кластера: ssh user1@serverПереходим в каталог ssh: cd ~/.sshГенерируем rsa-ключи: ssh-keygen -t rsaНа вопрос задать имя файла жмем Enter - остается имя по умолчанию id_rsa.На просьбу задать пароль жмем Enter два раза (второй раз для проверки).Копируем публичный ключ на узел кластера: scp id_rsa.pub user1@n01:~/.sshЛогинимся к узлу node1: ssh user1@n01Переходим в каталог ssh: cd ~/.ssh Копируем публичный ключ: cat id_rsa.pub >> authorized_keys2 Отключаемся от узла node1Повторяем пункты 6-10 для остальных узлов кластера (n02 ... nN)

Для работы с ssh должен быль запущен соответственно демон sshd, который запускается аналогично nfsd и inetd.

Теперь поставим и настроим LAM, для чего были скачаны и скомпилены последние на тот момент доступные исходники с сайта проекта. Сам процесс компиляции тривиален и сводится к ./configure&make;&make; install, единственное что необходимо учесть, это при выполнении ./configure задать параметры --prefix=/usr --with-rsh="/usr/bin/ssh -x", указав тем самым директорию установки и то, что в качестве средства межузловых коммуникаций будем использовать ssh в место rsh (путь соотвественно варьируется от дистрибутива и версии релиза).

Теперь про настройку самого кластера. Она проста до безобразия и сводится к редактированию файла usr/etc/lam-bhost.def. Хочу отметить, что имя этого файла во многих источниках указанно по разному как и путь у нему, очень сильно зависит от версии библиотек. Сам файл прост, и содержит список узлов, задействованных в кластере, так например для всего сказанного выше, он будет имет следующий вид:

1
2
3
server
n01:2
192.168.1.3



Одна строчка - один узел. В описании узла "n01" в примере был использован модификатор ":2". Это означает, что в качестве четвертого узла используется двухпроцессорная (SMP) машина. Этот файл должен быть одинаков на всех узлах.

Ну вот собственно и все. В итоге мы получаем вычислительный кластер распараллеливающий задачу на n-ое количество узлов.

Ну и на последок пара команд по управлению кластером.
Запуск кластера:

1
2
3
4
5
6
$lamboot -v lamhosts

LAM 7.1.4 - Indiana University

Executing hboot on n0 (node1.cluster.example.com - 1 CPU)...
Executing hboot on n1 (node2.cluster.example.com - 1 CPU)...



Просмотреть список запущенных процессом можно следующей командой:

1
2
3
4
5
$ mpitask
TASK (G/L) FUNCTION PEER|ROOT TAG COMM COUNT DATATYPE
0/0 master Recv ANY ANY WORLD 1 INT
1 slave <running>
2 slave <running>



Компилирование и установка программ написанных под кластер осуществляется командами:
1
$ mpicc -o foo foo.c               #для программ написанных на си



Запуск откомпилированнх приложений осуществляется командой
1
2
3
$ mpirun -v -np 2 foo
2445 foo running on n0 (o)
361 foo running on n1



Останавливается кластер командой lamhalt.

P.S.: На сегодняшний день проект LAM/MPI закрылся, его наследником является Open-MPI. Подробнее о использованной в данной статье технологии MPI пожно прочесть на википедии.

P.P.S.: Вроде ни че не забыл. Если что, извеняйте, давно было, писал по памяти и черновикам=).


Тэги: MPI slackware кластер
+ 12 -
Похожие Поделиться

digiwhite 01.02.2010 06:34 #
+ 0 -
Кластер (пусть и не большой) был я так понимаю использован как число дробилка?
digiwhite 01.02.2010 06:39 #
+ 0 -
Мда, утро, простите :)
al1e 01.02.2010 09:31 #
+ 0 -
кластер вообще собирался как макет, какие-то реальные задачи не расчитывались, только примеры из комплекта шедшие с библиотеками.
exelens 01.02.2010 08:04 #
+ 0 -
Отлично!
Спасибо!
Username 01.02.2010 16:06 #
+ 0 -
в мемориз

В хорошем качестве hd видео

Онлайн видео бесплатно


Смотреть русское с разговорами видео

Online video HD

Видео скачать на телефон

Русские фильмы бесплатно

Full HD video online

Смотреть видео онлайн

Смотреть HD видео бесплатно

School смотреть онлайн