LXF160:Кластеры Beowulf
|
|
|
Суперкомпьютеры. Присоединяйтесь к LXF в мировом господстве... или к Folding@home
Создаем свой суперкомпьютер
Мы в LXF любим суперкомпьютеры и свертывание белка, так почему бы не объединить это вместе в супер-руководстве от Дэвида Хейворда?
Что такое суперкомпьютер? Не монолитное ли это чудовище, гудящее в потайной серверной с кондиционером? Или, когда вы слышите это слово, на ум приходят компьютеры из «Военных игр» или «Супермена 3»? Ныне термин «суперкомпьютер» означает просто группу процессоров, параллельно работающих над выполнением любой поставленной задачи. Современный суперкомпьютер – просто набор определенным образом настроенных компьютеров (узлов кластера), иногда со специализированной операционной системой или набором программ для параллельной обработки данных.
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
Кластеризация для всех
Конечно, на самом деле все немного сложнее, но заберись мы в дебри суперкомпьютеров и кластеризации, на рассказ ушел бы весь день; поэтому не будем. Обычно мы представляем себе суперкомпьютеры (или кластеры, как мы будем называть их далее) как что-то недоступное нам, простым смертным, и принадлежащее полубогам IT, чья работа – обитать в темных уголках серверных комнат, спрятанных глубоко во внутренностях огромных корпораций, кормить кластеры и удовлетворять их потребности.
На самом деле все совсем не так, по крайней мере, в основном, но до самых недавних пор кластеризация была недоступна обычным людям. С появлением Linux и бесплатных открытых операционных систем каждый, у кого есть немного знаний и по меньшей мере пара компьютеров, может успешно создать кластер и пользоваться им почти так же, как это делают в NASA. Кластеры можно применять для решения многих повседневных задач, стоит только захотеть. В кластерах высокой доступности HA (High Availability) есть избыточные узлы, вводимые в действие, если другой узел выходит из строя. Они используются в основном для рабочих целей, но вы можете пользоваться ими и дома, например, для запуска web-хостинга.
У вас может быть кластер хранения файлов, который предоставляет дисковое пространство для использования несколькими компьютерами через сеть – дома его можно использовать как сервер мультимедиа. Эта идея лежит в основе многих популярных облачных сервисов.
У нас может быть кластер обработки данных, или вычислительный кластер. Он использует циклы простоя процессоров на каждом узле для выполнения вычислений или моделирования. Последним мы и займемся далее, запустив его поверх нашей локальной сети и используя доступные нам ресурсы. Подобная архитектура также известна как кластер Беовульф.
Folding@Home
Folding@Home, или FAH, существует несколько лет. С помощью распределенных вычислений проект помогает понять, как молекулы белка свертываются, ренатурируют и вызывают заболевания. Участие в этом проекте позволяет ученым прояснить течение синдромов Альцгеймера, Хантингтона и Паркинсона и, будем надеяться, определить механизм лечения. Если вам интересны подробности, зайдите на http://folding.stanford.edu/English/HomePage и прочтите текст о науке, стоящей за этим ПО.
Конечно, кроме гуманного аспекта здесь есть и игровой элемент. Команды, «свернувшие» наибольшее количество белков, попадают в чарты. Мы с нашим кластером не стремимся попасть на вершину чартов, мы просто хотим немного порезвиться с суперкомпьютерами и помочь проекту FAH. Для этого мы создали Команду свертывания белков Linux Format (Linux Format Folding Team), или LXFFT, под номером 217805, и ею мы воспользуемся на нашем уроке.
Первые шаги к успеху кластера
Загляните во врезку «Что нам надо»; мы предполагаем, что у вас уже есть два компьютера и локальная сеть. Без них создание кластера может усложниться. Мы также уточнили, что сеть должна быть проводной, так как не уверены, что операционная система BCCD поддержит все функции всех беспроводных устройств, которые могут у вас оказаться. Хотя большинство дистрибутивов Linux хорошо поддерживают беспроводные сети, лучше воспользоваться проводной, чем остаться без кластера.
Следующий пункт в списке – экземпляр ISO BCCD. BCCD, сокращение от Bootable Cluster CD [Загрузочный диск кластера]; это образ Knoppix Linux, поставляемый с готовыми системами распределенных вычислений.
Возьмите ISO-образ с нашего диска или загрузите его с bit.ly/oOtbcO. Мы воспользовались 32-битным образом версии 3.x. Запишите образ на несколько дисков с помощью своей любимой программы или на несколько USB-брелков с помощью Unetbootin. Почему на несколько? Ну, вы ведь хотите запускать это не на одном компьютере, правда?
Покончив с записью (мы воспользовались брелками), включите свой первый компьютер, или главный узел, как мы будем его называть, откройте меню загрузки ПК, обычно клавишей F12 или похожей, и выберите носитель, с которого нужно загружаться. Это Live-образ, и он не повлияет на данные, хранимые на жестком диске – но, как и в большинстве таких случаев, лучше сделать резервную копию.
Загрузка главного узла
Во время загрузки BCCD задаст несколько вопросов; первым из них будет предложение нажать Enter для загрузки. Если при появлении заставки BCCD этого не происходит, не волнуйтесь, это загрузчик Unetbootin (или что-то похожее) перехватывает управление. Если в верху экрана есть пингвины и образ загружается, все хорошо.
Затем будет запрошен пароль (имя хоста заполняется автоматически). Просто нажимаем Enter, чтобы оставить его пустым (мы сделали так на обоих компьютерах); последнее, что нам нужно – чтобы пароли не совпали из-за неверно напечатанного слова, поэтому нажмите Enter для задания пустого пароля и еще раз – для подтверждения (см. рис. 1).
Сеть
Если система BCCD распознает сетевую карту в вашей системе, следующий вопрос будет простым: «Это ваш сетевой адрес от DHCP (обычно, от маршрутизатора), принять? [this is your network address from the DHCP (usually your router), do you accept?]». Ответ в общем случае – да, так как здесь мы не хотим слишком много возиться с сетевыми настройками BCCD. Просто нажмите Enter на ответе «да [yes]», и загрузка продолжится. См. рис. 2.
Рабочий стол BCCD
Вслед за этим должен появиться рабочий стол BCCD. Если этого не происходит и вы остаетесь в текстовом режиме, причина, возможно, в том, что не удалось загрузить X-сервер; в этом случае наберите startx и подождите, пока рабочий стол загрузится. Если все пройдет успешно, вы увидите на экране нечто вроде рис. 3.
Прополощем, постираем, повторим
Отлично, первый барьер преодолен. Оставьте первый компьютер и перейдите ко второму, он же – узел 2. Повторите те же действия: пустой пароль и т. д. Сетевая карта должна получить другой IP-адрес (если нет, перезагрузитесь и попробуйте снова), и через минуту или две вы должны смотреть на два одинаковых рабочих стола BCCD.
Создание кластера
Прежде чем начать смеяться злобным смехом и гладить белую кошку, наберем несколько команд, с целью убедиться, что два компьютера могут связаться друг с другом и кластер будет работать. На главном узле в верхнем окне Терминал [Terminal] RXVT (с черным фоном) введите следующие команды:
bccd-allowall
Эта команда соберет ключи SSH хостов, что позволит обмениваться данными между двумя хостами без ввода паролей. Теперь введите команду:
bccd-snarfhosts
Она создаст или перезапишет файл machines, используемый программой MPI – подробнее о ней чуть позже. Сделайте то же самое на узле 2; хотя в теории этого не требуется, мы обнаружили. что BCCD лучше работает с одинаковыми файлами machines. Если вам интересно, что в этом файле, наберите в окне терминала главного узла команду:
vi ~/machines
Откроется текстовый файл, состоящий из нескольких строк. Первой будет нечто вроде node000.bccd.net slots=1. Это главный узел – так BCCD идентифицирует его в сети. Во второй строке будет узел 2, как BCCD идентифицирует его в сети – node009.bccd.net slots=1. Если в файлах machines одно и то же, отлично, вы почти у цели. Для выхода из Vi наберите
- quit
и нажмите Enter.
Разворачиваем FAH
Освоить FAH нетрудно. Несмотря на то, что последняя версия – 7, мы воспользуемся версией 6, так как она уж точно работает с BCCD. На главном узле введите следующую команду в окне терминала:
mkdir -p ~/folding
Создастся каталог folding с родительскими каталогами (при необходимости). Затем выполните команду
cd ~/folding
Вы перейдете в новый каталог folding. Команда
wget http://www.stanford.edu/group/pandegroup/folding/release/FAH6.02-Linux.tgz
загрузит клиент FAH в 32-битной версии с внешнего сервера. Команда
tar xzf FAH6.02-Linux.tgz /
распакует архив и извлечет необходимые файлы.
Теперь у нас есть клиент, и его нужно настроить для работы в BCCD. Для этого введите следующую команду:
chmod +x fah6
Она сделает программу fah6 исполняемой. Наконец, нужно сделать так, чтобы клиент работал с должной командой участников и именем пользователя. Введите команду:
./fah6 -configonly
Будет запущена утилита настройки клиента FAH. У вас запросят имя пользователя (не важно, что вы введете, если у вас его пока нет) и команду бойцов, за которую вы хотите «сворачивать» белки – можно выбрать свою собственную или присоединиться к команде Linux Format с номером 217805. Остальные параметры лучше не менять, поэтому просто нажмите Enter. Если вы осознаете, что делаете с FAH, задайте те значения, которые лучше всего соответствуют вашим потребностям.
MPI: ввод и вывод
MPI (Message Passing Interface – интерфейс передачи сообщений) – программа, которая позволяет процессам взаимодействовать друг с другом путем отправки и приема сообщений через сеть. Она используется для программирования параллельных вычислений и выступает в качестве посредника между многими узлами, которые потенциально могут общаться друг с другом.
Другими словами, она нужна нам затем, чтобы FAH использовал процессоры на обоих компьютерах так, как если бы он работал на одном компьютере. На самом деле это очень сложно. MPI управляет вводом и выводом данных и гарантирует, что они верны и в них нет ошибок; это незаменимо для программы вроде FAH.
Работай, MPI, работай
Если просто запустить FAH на главном узле, то клиент будет принимать пакеты и обрабатывать их, но без помощи второго узла. Теперь нам нужно сообщить главному узлу, что он будет запускать клиент FAH в кластере из двух уже идентифицированных узлов (самого себя и узла 2) в соответствии с файлом machines, так что ему будут доступны вычислительная мощность и результаты обработки с обоих компьютеров. Не спешите пугаться – это значительно проще, чем кажется.
Первая задача – синхронизировать каталог folding с обоими узлами. Для этого перейдите во вновь созданный каталог folding (на главном узле), набрав в терминале: cd ~/folding. Текущий каталог можно определить по строке приглашения. Она должна быть bccd@node000:~/folding$, как на рис. 4. Когда вы окажетесь в каталоге FAH, введите следующую команду (только на главном узле): bccd-syncdir . ~/machines.
Она создаст синхронизируемую папку на основе информации из файла machines, это каталог ~/folding, а идентифицированные в кластере компьютеры, которые получают доступ к этому файлу – node000 и node009 (главный узел и узел 2). Через пару минут на экране должно появиться окно, показанное на рис. 5.
Запишите временный каталог, использованный при синхронизации, в данном случае это /tmp/node000-bccd. Он понадобится нам на следующем шаге. Затем нажмите OK для возврата в терминал. Синхронизация настроена; осталось вызвать MPI для запуска клиента FAH в синхронизируемом каталоге, доступ к которому имеют оба наших узла.
Чтобы запустить FAH в кластере, введите следующую команду в окно терминала:
mpirun -machinefile ~/machines -np 6 /tmp/node000-bccd/./fah6 -verbosity 9
Эта команда просит MPI запуститься и заглянуть в файлы machines для определения активных узлов. Ключ –np 6 сообщает MPI, что исполняемая команда должна использовать шесть процессоров. Каталог /tmp – временный, он используется при синхронизации. Часть ./fah6 -verbosity – исполняемый файл, который запускает FAH. Нажмите Enter, и вы должны увидеть окно, показанное на рис. 6.
Кластер благодеяний
Ну вот и все – поздравляю, вы только что создали свой первый суперкомпьютер, или кластер. И послужили на благо людям. Если вы ждали завывания сирен и десантников в масках, врывающихся в комнату через окно – простите, что разочаровал. Щелкнув правой кнопкой мыши на рабочем столе каждого узла, вы можете открыть утилиты X и в них Xload; так вы получите базовую информацию по загрузке процессора.
Если вам понадобятся графические клиенты для сбора статистики, поищите сами и выберите наилучший для вас. Но для начала щелкните правой кнопкой мыши на рабочем столе, выберите Clustering [Кластеры] и затем XPVM. Кликните на Hosts [Хосты] и добавьте другой хост (node000 или node 009), затем кликните на Tasks > Spawn [Задания > Размножить] и в командной строке наберите:
/tmp/node000-bccd/fah6
Посмотрите на различные представления – они должны дать вам приблизительное понятие о происходящих там процессах.
Остальное – за вами: как далеко вы намерены зайти в этом проекте? Есть ли у вас другие компьютеры, которые можно добавить в кластер? Что бы вы ни решили, помните, что здесь мы только коснулись поверхности, поэтому двигайтесь дальше и учреждайте кластеры во славу Linux Format.
Кластер по имени...
BCCD – не единственная кластерная система. На поиски в сети можно потратить целый день, но чтобы вы не слишком напрягали глаза, вот еще несколько:
> Clusterknoppix
> Quantian
> Pelican HPC
> Parallel Knoppix
Одни кластеры лучше, другие хуже, но обязательно прогуляйтесь на их сайты и убедитесь, что проекты еще живы и развиваются.
Распределенные вычисления
Если вам почeму-либо не нравится FAH или вы не согласны с ним, вот краткий список других всемирных проектов параллельных вычислений:
> SETI@Home – поиск внеземных цивилизаций с SETI.
> Docking@home – модель докинга (стыковки) молекул белка.
> GPUGRIP.net – проводит полное атомно-молекулярное биомоделирование с картами на базе CUDA [разработанная компанией NVIDIA программно-аппаратная архитектура, позволяющая производить вычисления с применением графических процессоров NVIDIA и технологии GPGPU (произвольных вычислений на видеокартах), – прим. пер.].
> Climateprediction.net – предпринимает попытку сузить область неопределенности климатических моделей.
> AQUA@home – использует Quantum Monte Cairo для предсказания производительности сверхпроводниковых адиабатических квантовых компьютеров. Кхе...
> Einstein@home – к сожалению, не модель самого гения в натуральную величину, а поиск гравитационных волн.
Проектами буквально полнится Интернет – уверен, вам удастся найти что-нибудь для себя.|