LINUX.ORG.RU

Кластер для параллельного программирования


0

1

Всем привет. В универе решили заняться параллельным программированием. Передо мной поставлена задача собрать кластер (эта моя тема дипломной). Нашел кучу лив сд дистрибутивов которые запускают кластер без установки, но мне нужно чтобы кластер реально был установлен и запускался без всякого вмешательства кого-либо. Есть два варианта настройки кластера.

1. На все машины нужно ставить ось и соответствующие ПО для параллельного программирования.

2. Ось ставится тока на один комп, а все остальные грузятся по сети.

Бороздя просторы интернета нашёл сайт linux-cluster.org.ru. На этом сайте мне понравилось как реализован проект ThinCluster. Но дистрибутив который используется в этом кластере старый. Писал автору с просьбой как собрать кластер самому на базе свежего дисрибутива Debian Lenny. Вот ответ: «Хорошая новость в том, что развертывание кластера как такового - задача экстремально простая. Причем, для этого подойдет любой дистрибутив по вашему выбору. Вы предпочитаете Debian Lenny? Великолепно. Давайте исходить из этого. (К слову, я бы выбрал Ubuntu, но в сущности, это - те же яйца, вид сбоку.) Берите стабильную ветку, подключайте репозитории universe и multiverse и вперед, больше вам ничего не понадобится! Попытаюсь по шагам объяснить, как развернуть кластер, используя дистрибутив общего назначения, такой, как Debian Lenny.

"Итак... Вы должны будете: Установить операционную систему на компьютер, который будет выступать в роли консоли кластера. То есть на этом компьютере будут компилироваться и запускаться параллельные программы. Другими словами, за этим компьютером будет сидеть человек, запускать программы и смотреть, что получилось. После инсталлирования базовой ОС на консоли кластера, если это не сделано в процессе первоначальной установки, Вы должны будете установить необходимые компиляторы (фортран, С) и все необходимые библиотеки, desktop environment (GNOME или KDE по вашему выбору), текстовые редакторы и пр., то есть превратить этот компьютер в рабочую станцию разработчика. Установить из репозитория или из исходников пакет MPICH или OpenMPI, если он Вам более по душе. Я лично предпочитаю MPICH. Описать в /etc/hosts будущие узлы вашего кластера, в том числе и консоль кластера. Установить NFS и расшарить для всех узлов кластера некую директорию, в которой будут размещаться исполняемые модули параллельных программ и файлы данных, которыми эти программы будут пользоваться в процессе своей работы. Установить ssh-клиент (обязательно) и ssh-сервер (опционально, если Вы предполагаете давать доступ к консоли кластера по сети). На всех узлах кластера установить операционную систему, библиотеки, необходимые для выполнения пользовательских параллельных программ, установить MPICH, NFS-client, ssh-server. Узлы кластера в целях экономии ресурсов должны грузиться в runlevel 3, так что ставить туда GNOME или KDE не надо. Максимум - поставить туда гномовские или кдешные библиотеки, если они нужны пользовательским программам. Описать в /etc/hosts всех узлов кластера будущие узлы вашего кластера, в том числе и консоль кластера. На всех узлах кластера необходимо автоматом при загрузке монтировать расшаренный в п. 5 ресурс. Причем, путь к этому ресурсу должен быть одинаков, как на консоли кластера, так и на его узлах. Например, если на консоли кластера Вы расшариваете каталог /home/mpiuser/data, то на узлах кластера этот ресурс также должен быть смонтирован в /home/mpiuser/data. На всех узлах кластера обеспечить безпарольный доступ по ssh для консоли кластера. Как это сделать вы можете посмотреть на моем сайте. Собственно все! Кластер собран и работоспособен. Как компилировать и запускать на исполнение параллельные программы Вы можете посмотреть на моем сайте и в документации к MPICH."

Как видите, все очень просто и ничего, кроме дистрибутива Debian с репозиториями не нужно.»

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

Автор проекта ThinCluster также написал: «Особая сложность возникает при построении кластера, узлы которого загружаются по сети, тем более, если пытаться совместить ваш любимый дистрибутив с некими конфигурациями из других дистрибутивов.»

А я как раз и хочу сделать это.

Автор проекта «К сожалению я мало интересовался вопросом сетевой загрузки линукса. Поэтому маловероятно, что я смогу Вам помочь в этом. Я игрался с этим давно и сейчас уже мало что помню. Единственное, что могу посоветовать, так это - посмотреть в сторону дистрибутива PelicanHPC GNU Linux.»

Посмотрел я в эту сторону, но это тоже Лив СД. А как установить его со всеми его настройками на реал машину я не смог найти.

Не знаю как правильно сделать сетевую загрузку, т.е. не саму загрузку а поддерево для бездисковых терминалов которые будут грузится по сети. Настроил DHCP, TFTP, NFS, даже пытался сделать поддерево путем копирования реальной корневой системы. Кое как загрузил с бездисковой станции и получил доступ к консоли, но во время загрузки вылезали ошибки. Вообщем не знаю как правильно сделать chroot дерево для бездисковых станций. Пробовал еще один вариант: настроил LTSP. Бездисковый терминал загрузился, но помоему это не то что мне нужно, бездисковый терминал скорее всего жрет ресурсы сервера, а мне нужно использовать его ресурсы в кластере. Вообщем окончательно запутался, что да как. Может есть знающие люди, которые могут помочь и подробно объяснить последовательность действий при решении такого рода задач.


Re: Кластер для параллельного программирования

>Передо мной поставлена задача собрать кластер (эта моя тема дипломной).

я конечно не из приёмной комиссии, но в чём научная новизна?

dimon555 ★★★★★ ()

Re: Кластер для параллельного программирования

Как-то учувствовал на олимпиаде по программированию Intech 2007. И все участники представляли свои работы. Так вот один чувак был, который всем задавал один и тот же вопрос – «В чем новизна вашего проекта?». Это случайно не Вы были? И когда я защищался я точно был уверен что он это спросит :-D. Тема на самом деле заключается в другом, но от меня требуется собрать кластер (это просьба заведующего), а там дальше как он сказал, привяжем.

daido ()

Re: Кластер для параллельного программирования

Не это не я, про научную новизну просто любят поспрашивать, иногда ;)

http://eucalyptus.cs.ucsb.edu/
http://www.opennet.ru/opennews/art.shtml?num=18558

правда это про cloud computing(может попробовать это с кластером совместить, чтобы можно было легко наращивать значит железо и чтобы когда что-то железное сдохнет ничего не менялось, вот может какая-то новизна)

http://www.kerrighed.org/wiki/index.php/Main_Page
вот что-то интересное

http://helmer.sfe.se/
правда опять не про то

ещё можно озаботиться про кластерные файловые системы, чтобы откуда-то данные брать и хранить
туда же iSCSI, ATAoE

top500.org посмотреть, может там лучшие практики есть
есть вские кластерные knoppix
можно попробовать сборку scientific linux

для разворачивание вертиться cobbler на уме

dimon555 ★★★★★ ()

Re: Кластер для параллельного программирования

>http://www.kerrighed.org/wiki/index.php/Main_Page вот что-то интересное

Да действительно по моему то что нужно, документация хорошая. Попробую Если получится потом отпишусь.

Если у кого ещё что есть по существу можете писать ). Спасибо.

daido ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.