Кластеры класса беовульф реферат

Обновлено: 05.07.2024

Курсовой проект содержит 38 страниц машинописного текста, 11 литературных источников, 12 рисунков.

Ключевые слова: суперкомпьютер, архитектура, процессор, кластер, интерфейс, технология, операнд, компиляция, команда, оптимизация, переменная, данные, регистр, операция, итерационность, конвейерность, электронно-вычислительная машина.

В данном курсовом проекте рассматриваются многопроцессорные вычислительные системы Cry T3D(E) и Беовульф-кластеры рабочих станций, а также в все сопутствующие этим двум темам понятия и определения необходимые для понятного изложения материала.

1. Общие вопросы решения "больших задач"

1.1 Современные задачи науки и техники, требующие для решения суперкомпьютерных мощностей

1.2 Параллельная обработка данных

1.2.1 Принципиальная возможность параллельной обработки

1.2.2 Абстрактные модели параллельных вычислений

1.2.3 Способы параллельной обработки данных, погрешность вычислений

1.3 Понятие параллельного процесса и гранулы распараллеливания

1.4 Взаимодействие параллельных процессов, синхронизация процессов

1.5 Возможное ускорение при параллельных вычислениях (закон Амдаля)

2. Принципы построения многопроцессорных вычислительных систем

2.1 Архитектура многопроцессорных вычислительных систем

2.2 Распределение вычислений и данных в многопроцессорных вычислительных системах с распределенной памятью

2.3 Классификация параллельных вычислительных систем

2.4 Многопроцессорные вычислительные системы c распределенной памятью

2.4.1 Массивно-параллельные суперкомпьютеры серии Cry T3

2.4.2 Кластерные системы класса BEOWULF

2.4.3 Коммуникационные технологии, используемые при создании массово-параллельных суперкомпьютеров

Список используемой литературы

Еще на заре компьютерной эры, примерно в середине прошлого века, конструкторы электронно-вычислительных машин задумались над возможностью применения параллельных вычислений в компьютерах. Ведь увеличение быстродействия только за счет совершенствования электронных компонентов компьютера – достаточно дорогой способ, который, к тому же, сталкивается с ограничениями, налагаемыми физическими законами. Так параллельная обработка данных и параллелизм команд были введены в конструкцию компьютеров и сейчас любой пользователь "персоналки", возможно, сам того не зная, работает на параллельном компьютере.

Одной из заметных тенденций развития человечества является желание максимально строго моделировать процессы окружающей действительности с целью как улучшения условий жизни в настоящем, так и максимально достоверного предсказания будущего. Математические методы и приемы цифрового моделирования во многих случаях позволяют разрешать подобные проблемы, однако с течением времени имеет место серьезное качественное и количественное усложнение технологии решения задач. Во многих случаях ограничением является недостаток вычислительных мощностей современных электронно-вычислительных машинах, но значимость решаемых задач привлекли огромные финансовые ресурсы в область создания сверхсложных электронно-вычислительных машин.

С некоторых пор повышение быстродействия компьютеров традиционной (именуемой "фон Неймановской") архитектуры стало чрезмерно дорого вследствие технологических ограничений при производстве процессоров, поэтому разработчики обратили внимание на иной путь повышения производительности – объединение электронно-вычислительных машин в многопроцессорные вычислительные системы. При этом отдельные фрагменты программы параллельно (и одновременно) выполняются на различных процессорах, обмениваясь информацией посредством внутренней компьютерной сети.

Идея объединения электронно-вычислительных машин с целью повышения, как производительности, так и надежности известны с конца пятидесятых годов.

Требования получить максимум производительности при минимальной стоимости привели к разработке многопроцессорных вычислительных комплексов; известны системы такого рода, объединяющие вычислительные мощности тысяч отдельных процессоров. Следующим этапом являются попытки объединить миллионы разнородных компьютеров планеты в единый вычислительный комплекс с огромной производительностью посредством сети Internet. На сегодняшний день применение параллельных вычислительных систем является стратегическим направлением развития вычислительной техники. Развитие "железа" с необходимостью подкрепляются совершенствованием алгоритмической и программной компонент – технологий параллельного программирования.

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

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

В данном курсовом проекте рассматриваются две основные темы:

1. Многопроцессорные вычислительные системы – (массивно-параллельные суперкомпьютеры) Cray T3D(E) с количеством процессоров от 40 до 2176. Это суперкомпьютеры с распределенной памятью на RISC-процессорах типа Alpha21164A, с топологией коммуникационной сети – трехмерный тор, операционной системой UNIX с микроядром и трансляторами для языков FORTRAN, HPF, C/C++. Поддерживаемые модели программирования: MPI, PVM, HPF.

2. Беовульф-кластеры рабочих станций. Кластеры рабочих станций – совокупность рабочих станций, соединенных в локальную сеть. Кластер – вычислительная система с распределенной памятью и распределенным управлением. Кластерная система может обладать производительностью, сравнимой с производительностью суперкомпьютеров. Кластеры рабочих станций обычно называют Беовульф-кластерами (Beowulf cluster – по одноименному проекту), связанны локальной сетью Ethernet и используют операционную систему Linux.

Также в данном курсовом проекте рассматриваются все сопутствующие этим двум темам понятия и определения необходимые для понятного изложения материала.

Интерфейс MPI поддерживает создание параллельных программ в стиле MIMD (Multiple Instruction Multiple Data), что подразумевает объединение процессов с различными исходными текстами. Однако писать и отлаживать такие программы очень сложно, поэтому на практике программисты, гораздо чаще используют SPMD-моделъ (Single Program Multiple Data) параллельного программирования, в рамках которой для всех параллельных процессов используется один и тот же код. В настоящее время все больше и больше реализаций MPI поддерживают работу с так называемыми "нитями".

Поскольку MPI является библиотекой, то при компиляции программы необходимо прилинковать соответствующие библиотечные модули.

После получения выполнимого файла необходимо запустить его на требуемом количестве процессоров.

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

Процессоры с сокращенным набором команд (RISC). В основе RISC-архитектуры (RISC – Reduced Instruction Set Computer) процессора лежит идея увеличения скорости его работы за счет упрощения набора команд.

Исследования показали, что 33% команд типичной программы составляют пересылки данных, 20% – условные ветвления и еще 16% – арифметические и логические операции. В подавляющем большинстве команд вычисление адреса может быть выполнено быстро, за один цикл. Более сложные режимы адресации используются примерно в 18% случаев. Около 75% операндов являются скалярными, то есть переменными целого, вещественного, символьного типа и т. д., а остальные являются массивами и структурами. 80% скалярных переменных – локальные, а 90% структурных являются глобальными. Таким образом, большинство операндов – это локальные операнды скалярных типов. Они могут храниться в регистрах.

Согласно статистике, большая часть времени тратится на обработку операторов "вызов подпрограммы" и "возврат из подпрограммы". При компиляции эти операторы порождают длинные последовательности машинных команд с большим числом обращений к памяти, поэтому даже если доля этих операторов составляет всего 15%, они потребляют основную часть процессорного времени. Только около 1% подпрограмм имеют более шести параметров, а около 7% подпрограмм содержат более шести локальных переменных.

В результате изучения этой статистики был сделан вывод о том, что в типичной программе доминируют простые операции: арифметические, логические и пересылки данных. Доминируют и простые режимы адресации. Большая часть операндов – это скалярные локальные переменные. Одним из важнейших ресурсов повышения производительности является оптимизация указанных операторов.

В основу RISC-архитектуры положены следующие принципы и идеи. Набор команд должен быть ограниченным и включать только простые команды, время выполнения которых после выборки и декодирования один такт или чуть больше. Используется конвейерная обработка. Простые RISC-команды допускают эффективную аппаратную реализацию, в то время как сложные команды могут быть реализованы только средствами микропрограммирования. Конструкция устройства управления в случае RISC-архитектуры упрощается, и это дает возможность процессору работать на больших тактовых частотах. Использование простых команд позволяет эффективно реализовать и конвейерную обработку данных, и выполнение команд.

Сложные команды RISC-процессором выполняются дольше, но их количество относительно невелико. В RISC-процессорах небольшое число команд адресуется к памяти. Выборка данных из оперативной памяти требует более одного такта. Большая часть команд работает с операндами, находящимися в регистрах. Все команды имеют унифицированный формат и фиксированную длину. Это упрощает и ускоряет загрузку и декодирование команд, поскольку, например, код операции и поле адреса всегда находятся в одной и той же позиции. Переменные и промежуточные результаты вычислений могут храниться в регистрах. С учетом статистики использования переменных, большую часть локальных переменных и параметров процедур можно разместить в регистрах. При вызове новой процедуры содержимое регистров обычно перемещается в оперативную память, однако, если количество регистров достаточно велико, удается избежать значительной части длительных операций обмена с памятью, заменив их операциями с регистрами. Благодаря упрощенной архитектуре RISC-процессора, на микросхеме появляется место для размещения дополнительного набора регистров.

В настоящее время вычислительные системы с RISC-архитектурой занимают лидирующие позиции на мировом компьютерном рынке рабочих станций и серверов. Развитие RISC-архитектуры связано с развитием компиляторов, которые должны эффективно использовать преимущества большого регистрового файла, конвейеризации и т. д.

В течение последних лет наблюдался бурный рост производительности микропроцессоров и вычислительной техники на их основе. Однако, не смотря на это, потребность в суперкомпьютерах не снизилась, а наоборот продолжает расти. Многие задачи, требующие решения, являются весьма требовательными к вычислительным ресурсам. А это требует создания вычислительных систем, превышающих самые современные микропроцессоры по производительности во много раз. Становится очевидным, что единственным выходом из этой ситуации становится использование многопроцессорных технологий. Эти технологии имеют массу преимуществ. Одним из них является возможность масштабирования этих систем, а именно изменения объёма вычислительных ресурсов за счёт числа процессоров, используемых в системе. Поэтому многопроцессорность в настоящее время перестаёт быть чертой, исключительно присущей суперкомпьютерам.

Сама же идея параллельной обработки данных была выдвинута более сотни лет назад до появления первого компьютера Чарльзом Бэббиджем, но существовавшие на тот момент технологии не могли позволить ему реализовать её. И вот, с появлением ЭВМ эти идеи стали воплощаться в жизнь. До недавнего времени этим воплощением были супер ЭВМ, но и им появилась альтернатива. И эта альтернатива - кластер .

Кластерные системы возникли как более дешевое решение проблемы недостатка вычислительных ресурсов, и основываются на использовании в своей архитектуре широко распространенных и относительно дешевых технологий, аппаратных и программных средств, таких как PC, Ethernet, Linux и т.д. Использование массовых технологии в кластерных системах стало возможным благодаря значительному прогрессу в развитии компонентов обычных вычислительных систем, таких как центральные процессоры, операционные системы, коммуникационные среды.

Кластерные системы

Кластер всегда состоит из узлов, являющихся полноценными компьютерами, которые соединены сетью для выполнения обмена данными. При этом, эти компьютеры не обязательно должны быть однотипными, система может быть и гетерогенной, объединяя в себе компьютеры различной архитектуры - от персональных ЭВМ до сверхпроизводительных супер ЭВМ.

Кластер может быть как территориально сосредоточен, так и распределён. Построению распределённых кластеров способствует развитие глобальной сети Internet. На наш взгляд, в будущем будет происходить преобладание именно этого типа кластеров, что позволит получить вычислительные мощности огромных объёмов, которые не будут уступать отдельным супер ЭВМ.

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

·в кластерную систему собираются все доступные компьютеры, которые также могут функционировать и отдельно. Например в такую кластерную систему можно объединить компьютеры, находящиеся в учебной аудитории или подключённые к университетской сети;

·в кластерную систему целенаправленно соединяются промышленно выпускаемые ЭВМ. При это создаётся мощный вычислительный ресурс. Этот подход позволяет удешевить саму кластерную систему, т.к. не требуется снабжать каждый отдельный узел монитором, клавиатурой и другими периферийными устройствами.

Кластерные системы являются развитием параллельных систем. Чтобы показать место кластерных систем среди остальных типов параллельных архитектур вычислительных систем нужно привести их классификацию. Параллельные системы могут быть классифицированы по различным критериям.

Одним из наиболее распространенных способов классификации ЭВМ является систематика Флинна (Flynn), в рамках которой основное внимание при анализе архитектуры вычислительных систем уделяется способам взаимодействия последовательностей (потоков) выполняемых команд и обрабатываемых данных.

SISD (Single Instruction, Single Data) - системы, в которых существует одиночный поток команд и одиночный поток данных. К такому типу можно отнести обычные последовательные ЭВМ;

SIMD (Single Instruction, Multiple Data) - системы c одиночным потоком команд и множественным потоком данных. Подобный класс составляют многопроцессорные вычислительные системы, в которых в каждый момент времени может выполняться одна и та же команда для обработки нескольких информационных элементов; такой архитектурой обладают, например, многопроцессорные системы с единым устройством управления. Этот подход широко использовался в предшествующие годы (системы ILLIAC IV или CM-1 компании Thinking Machines), в последнее время его применение ограничено, в основном, созданием специализированных систем;

MISD (Multiple Instruction, Single Data) - системы, в которых существует множественный поток команд и одиночный поток данных. Относительно этого типа систем нет единого мнения: ряд специалистов считает, что примеров конкретных ЭВМ, соответствующих данному типу вычислительных систем, не существует и введение подобного класса предпринимается для полноты классификации; другие же относят к данному типу, например, систолические вычислительные системы или системы с конвейерной обработкой данных;
MIMD (Multiple Instruction, Multiple Data) - системы c множественным потоком команд и множественным потоком данных. К подобному классу относится большинство параллельных многопроцессорных вычислительных систем.

Кластерные системы класса BEOWULF

Запредельная стоимость промышленных массивно-параллельных компьютеров не давали покоя специалистам, желающим применить в своих исследованиях вычислительные системы сравнимой мощности, но не имеющих возможностей приобрести промышленные супер-ЭВМ. Поиски в этом направлении привели к развитию вычислительных кластеров (не путать с кластерами баз данных и WEB-серверов); технологической основой развития кластеризации стали широкодоступные и относительно недорогие микропроцессоры и коммуникационные (сетевые) технологии, появившиеся в свободной продаже в девяностых годах.

Вычислительный кластер представляет собой совокупность вычислительных узлов (от десятков до десятков тысяч), объединенных высокоскоростной сетью c целью решения единой вычислительной задачи. Каждый узел вычислительного кластера представляет собой фактически программируемых электронно-вычислительных машин (часто двух- или четырех- процессорный/ядерный SMP-сервер), работающую со своей собственной операционной системой (в подавляющем большинстве Linux(*)); объединяющую сеть выбирают исходя из требуемого класса решаемых задач и финансовых возможностей, практически всегда реализуется возможность удаленного доступа на кластер посредством InterNet.

Вычислительные узлы и управляющий компьютер обычно объединяют (минимум) две (независимые) сети - сеть управления (служит целям управления вычислительными узлами) и (часто более производительная) коммуникационная сеть (непосредственный обмен данными между исполняемыми на узлах процессами), дополнительно управляющий узел имеет выход в Internet для доступа к ресурсам кластера удаленных пользователей, файл-сервер выполняет функции хранения программ пользователя (рисунок 12). Администрирование кластера осуществляется с управляющей ЭВМ (или посредством удаленного доступа), пользователи имеют право доступа (в соответствие с присвоенными администратором правами) к ресурсам кластера исключительно через управляющий компьютер.

Windows-кластеры значительной мощности до настоящего времени остаются экзотикой в силу известных причин (несмотря на активно продвигаемые MS решения класса Windows Compute Cluster Server - WCCS).

Одним из первых кластерных проектов явился проект BEOWULF. Проект "БЕОВУЛЬФ" был заложен в созданном на основе принадлежащей NASA организации GSFC (Goddard Space Flight Center) исследовательском центре CESDIS (Center of Excellence in Space Data and Information Sciences) в 1994 году и стартовал сборкой в GSFC 16шестнадцатиузлового кластера (на процессорах 486DX4/100 MHz, 16 Mb памяти, 3 сетевых адаптера на каждом узле и 3 параллельных 10 Mbit Ethernet-кабелей); вычислительная система предназначалась для проведения работ по проекту ESS (Earth and Space Sciences Project).

Позднее в подразделениях NASA были собраны другие модели BEOWULF-подобных кластеров: например, theHIVE (Highly-parallel Integrated Virtual Environment) из 64 двухпроцессорных (Pentium Pro/200 MHz, 4 Gb памяти и 5 коммутаторов Fast Ethernet в каждом) узлов. Именно в рамках проекта Beowulf были разработаны драйверы для реализации режима Channel Bonding.

"Беовульф" - типичный образец многопроцессорной системы MIMD (Multiple Instruction ? Multiple Data), при этом одновременно выполняются несколько программных ветвей, в определенные промежутки времени обменивающиеся данными. Многие последующие разработки во всех странах мира фактически являются кланами Beowulf.

В 1998 году в национальной лаборатории Лос-Аламос астрофизик Michael Warren с сотрудниками группы теоретической астрофизики построили вычислительную систему Avalon, представляющую Linux-кластер на процессорах DEC Alpha/533 MHz. Первоначально Avalon состоял из 68 процессоров, затем был расширен до 140, в каждом узле установлено 256 MB оперативной памяти, EIDE-жесткий диск 3,2 Gb, сетевой адаптер фирмы Kingston.

Узлы соединены с помощью четырех коммутаторов Fast Ethernet и центрального двенадцатипортового коммутатора Gigabit Ethernet фирмы 3Com.

Типичным образцом массивно-параллельной кластерной вычислительной системы являются МВС-1000M (коммуникационная сеть - Myrinet 2000, скорость обмена информацией 120-170 Мбайт/сек, вспомогательные - Fast и Gigabit Ethernet) и МВС-15000ВС.

Требование максимальной эффективности использования ресурсов вычислительных мощностей (как процессорных, так и оперативной и дисковой памяти) отдельных процессоров кластера неизбежно приводит к снижению "интеллектуальности" операционной системы вычислительных узлов до уровня мониторов; с другой стороны, предлагаются распределенные кластерные операционные системы - например, Amoeba, Chorus, Mach и др.

Специально для комплектации аппаратной части вычислительных кластеров выпускаются Bladed - сервера (*) - узкие вертикальные платы, включающие процессор, оперативную память (обычно 256 - 512 МБайт при L2-кэше 128 - 256 КБайт), дисковую память и микросхемы сетевой поддержки; эти платы устанавливаются в стандартные "корзины" формата 3U шириной 19 и высотой 5,25 до 24 штук на каждую (240 вычислительных узлов на стойку высотою 180 см). Для снижения общего энергопотребления могут применяться расходующие всего единицы ватт (против 75 W для P4 или 130 W для кристаллов архитектуры IA-64) процессоры Transmeta Crusoe серии TM 5x00 с технологией VLIW; при этом суммарная потребляемая мощность при 240 вычислительных узлах не превышает 1 кВт.

Заключение

Как уже было отмечено, в настоящий момент происходит бурное развитие параллельных вычислительных систем и кластерных систем в частности. Как показывает статистика распределения различных параллельных систем в мире, кластерные системы занимают не последнее место по производительности (как максимальной, так и пиковой).

Итак, подведём итог сказанному, перечислив преимущества и недостатки кластеров.

1. Наличие общедоступного ПО.

2.Возможность использования существующей сетевой инфраструктуры.

3. Не требуется приобретать специализированное оборудование.

4. Возможность создания гетерогенных вычислительных систем.

5. Возможность создания систем с произвольным количеством узлов(от двух до нужного количества).

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

1. Скорость обмена между узлами зависит от используемого сетевого оборудования. А, следовательно, желательно использовать наиболее современное и дорогостоящее оборудование.

Как мы видим из перечисленного, кластерные технологии являются наиболее перспективным направлением для разработок и исследований в области высокопроизводительных вычислительных систем. Они позволяют добиться приемлемых результатов при приемлемом уровне затрат, что является одним из основных аргументов в их пользу.

Что такое Beowulf?

Поставщики традиционных коммерческих суперкомпьютеров (SMP, MPP, параллельных векторных) достаточно быстро улучшают производительность, надежность и простоту использования своих продуктов. Однако у этих компьютеров есть один большой недостаток - цена, подчас недоступная для многих образовательных и научно-исследовательских организаций. Однако потребность в вычислительных ресурсах у этих организаций велика.

Следует иметь в виду, что производительность персональных компьютеров на базе процессоров Intel в последние годы также значительно выросла. Такие компьютеры стали создавать серьезную конкуренцию рабочим станциям на базе RISC, особенно по показателю цена/производительность. Одновременно стала приобретать все большую популярность ОС Linux - бесплатно распространяемая версия UNIX. При этом в научных организациях и университетах, как правило, имеются энтузиасты бесплатного распространяемого ПО и специалисты ("гуру") по ОС Linux.

Возникла идея создавать параллельные вычислительные системы (кластеры) из общедоступных компьютеров на базе Intel и недорогих Ethernet-сетей, устанавливая на эти компьютеры Linux и одну из бесплатно распространяемых коммуникационных библиотек (PVM, а затем MPI). Оказалось, что на многих классах задач и при достаточном числе узлов такие системы дают производительность, сравнимую с суперкомпьютерной.

История проекта Beowulf

Проект возник в научно-космическом центре NASA - Goddard Space Flight Center (GSFC), точнее в созданном на его основе CESDIS (Center of Excellence in Space Data and Information Sciences).

Проект Beowulf начался летом 1994 года сборкой в GSFC 16-процессорного кластера (на процессорах 486DX4/100MHz, 16MB памяти и 3 сетевых адаптера на каждом узле, 3 "параллельных" Ethernet-кабеля по 10Mbit). Данный кластер, который и был назван "Beowulf", создавался как вычислительный ресурс проекта Earth and Space Sciences Project (ESS). Есть картинка с изображением этого первого Beowulf-а.

Далее в GSFC и других подразделениях NASA были собраны другие, более мощные кластеры. Например, кластер theHIVE (Highly-parallel Integrated Virtual Environment) содержит 64 узла по 2 процессора Pentium Pro/200MHz и 4GB памяти в каждом, 5 коммутаторов Fast Ethernet. Общая стоимость этого кластера составляет примерно $210 тыс. Доступна информация о производительности theHIVE на различных приложениях и тестах.

В рамках проекта Beowulf был разработан ряд высокопроизводительных и специализированных сетевых драйверов (в частности, драйвер для использования нескольких Ethernet-каналов одновременно).

Откуда возник термин "Beowulf"?

Изначательно термин "Beowulf" возник как собственное имя Linux-кластера в GSFC. Затем он стал применяться ко всем аналогичным кластерным системам (Beowulf-кластер, кластер "а-ля" Beowulf).

Avalon, суперкомпьютер на базе Linux

В 1998 году в Лос-аламосской национальной лаборатории астрофизик Michael Warren и другие ученые из группы теоретической астрофизики построили суперкомпьютер Avalon, который представляет из себя Linux-кластер на базе процессоров DEC Alpha/533MHz. Avalon первоначально состоял из 68 процессоров, затем был расширен до 140. В каждом узле установлено 256MB оперативной памяти, EIDE-жесткий диск на 3.2GB, сетевой адаптер от Kingston (общая стоимость узла - $1700). Узлы соединены с помощью 4-х 36-портовых коммутаторов Fast Ethernet и расположенного "в центре" 12-портового коммутатора Gigabit Ethernet от 3Com.

Общая стоимость Avalon - $313 тыс., а его производительность по LINPACK (47.7 GFLOPS) позволила ему занять 114 место в 12-й редакции списка Top500 (рядом с 152-процессорной системой IBM SP2). 70-процессорная конфигурация Avalon по многим тестам показала такую же производительность, как 64-процессорная система SGI Origin2000/195MHz стоимость которой превышает $1 млн.

В настоящее время Avalon активно используется в астрофизических, молекулярных и других научных вычислениях. На конференции SC'98 создатели Avalon представили доклад, озаглавленный "Avalon: An Alpha/Linux Cluster Achieves 10 Gflops for $150k" и заслужили премию по показателю цена/производительность ("1998 Gordon Bell Price/Performance Prize").



Mike Warren на фоне своего детища

Как построить Beowulf?

Кластер состоит из отдельных машин (узлов) и объединяющей их сети (коммутатора). Кроме ОС, необходимо установить и настроить сетевые драйверы, компиляторы, ПО поддержки параллельного программирования и распределения вычислительной нагрузки.

Одну из машин следует выделить в качестве центральной (головной) куда следует установить достаточно большой жесткий диск, возможно более мощный процессор и больше памяти, чем на остальные (рабочие) узлы. Имеет смысл обеспечить (защищенную) связь этой машины с внешним миром.

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

Возможна организация кластеров на базе уже существующих сетей рабочих станций, т.е. рабочие станции пользователей могут использоваться в качестве узлов кластера ночью и в выходные дни. Системы такого типа иногда называют COW (Cluster of Workstations).

Количество узлов следует выбирать исходя из необходимых вычислительных ресурсов и доступных финансовых средств. Следует понимать, что при большом числе узлов придется также устанавливать более сложное и дорогое сетевое оборудование.

2. Сеть. В простейшем случае используется один сегмент Ethernet (10Mbit/sec на витой паре). Однако дешевизна такой сети, вследствие коллизий оборачивается большими накладными расходами на межпроцессорные обмены; а хорошую производительность такого кластера следует ожидать только на задачах с очень простой параллельной структурой и при очень редких взаимодействиях между процессами (например, перебор вариантов).

Для получения хорошей производительности межпроцессорных обменов используют полнодуплексный Fast Ethernet на 100Mbit/sec. При этом для уменьшения числа коллизий или устанавливают несколько "параллельных" сегментов Ethernet, или соединяют узлы кластера через коммутатор (switch).

Более дорогостоящим, но также популярным вариантом являются использование коммутаторов типа Myrinet (1.28Gbit/sec, полный дуплекс). Менее популярными, но также реально используемыми при построении кластеров сетевыми технологиями являются технологии сLAN, SCI и Gigabit Ethernet.

Примерная конфигурация и ее стоимость

Возьмем следующую конфигурацию кластера: 12 машин по 2 процессора Pentium II/350MHz на материнских платах Iwill, 64MB памяти и сетевой адаптер 100Mbit Ethernet от 3Com на каждой машине; машины соединим "звездой" через 12-портовый коммутатор BayStack. На центральную машину установим жесткий диск IDE объемом 10 GB, видеокарту и 17-дюймовый монитор . Суммарная стоимость оборудования такого кластера составит около $11200 (взяты цены московских компьютерных магазинов по состоянию на апрель 1999 г.); а пиковая производительность - 10 GFLOPS (учтите, что реальная производительность на конкретных приложениях будет гораздо ниже).

Системное ПО

1. Операционная система. Следует установить бесплатно распространяемую OC Linux с усовершенствованным ядром версий 2.2.*. Дистрибутивы Linux распространяются через Интернет или на CD-ROM. Рекомендуемый дистрибутив - RedHat Linux версий 5.2 и позже. Существует также русифицированный дистрибутив - KSI Linux. Существует и отлажена техника загрузки Linux через сеть, что очень полезно для бездисковых конфигураций. Необходимо найти и правильно настроить наиболее подходящие к установленным адаптерам драйвера.

2. Компиляторы. Бесплатные компиляторы проекта GNU - GCC/G77, распространяемые вместе с Linux, к сожалению, не обеспечивают приемлемого уровня оптимизации программ. Имеет смысл выбрать коммерческие компиляторы Fortran/C/C++, входящие в пакет PGI Workstation компании Portland Group (PGI). Эти компиляторы адаптированы к платформе Intel и обеспечивают очень высокий уровень оптимизации для процессоров Pentium Pro/Pentium II (именно они используются на суперкомпьютере ASCI Red), и поддерживают популярный интерфейс OpenMP для распараллеливания программ в модели общей памяти на SMP-компьютерах. Стоимость поставки только компилятора Fortran 77 $299. Доступна evaluation-версия пакета PGI Workstation ("test drive").

После установки реализации MPI имеет смысл протестировать реальную производительность сетевых пересылок.

Кроме MPI, есть и другие библиотеки и системы параллельного программирования, которые могут быть использованы на кластерах. Следует понимать, что использование для программирования нестандартных средств ведет к плохой переносимости параллельных программ.

Смотрите также

Ссылки. Рекомендуемые статьи и Web-страницы по данной тематике

    - официальная страница проекта Beowulf в GSFC. Проект Beowulf в Калифорнийском технологическом институте: How to Build a Beowulf: a Tutorial - практическое руководство "Как построить кластер". На нашем FTP-сервере доступны копии отдельных частей этого документа:
      (PS, 236K) - для чего нужны Beowulf-кластеры? (PS, 93K) - высокоскоростные сетевые протоколы для кластеров.

    Другие интересные проекты

    • Доступна статья "A Case for Networks of Workstations: NOW" (PS, 58K), опубликованная в феврале 1995 г. журналом IEEE Micro. Обсуждаются основные идеи проекта NOW.

    Проект Condor (High Throughput Computing). Система Condor разрабатывается в университете шт. Висконсин (Madison). Condor распределяет независимые подзадачи по существующей в организации сети рабочих станций, заставляя компьютеры работать в свободное время (то есть в то время, когда они простаивали бы без своих пользователей). Программное обеспечение системы Condor доступно бесплатно. В настоящее время поддерживаются платформы SGI, Solaris, Linux, HP-UX, и Digital Unix, однако планируется также поддержка Windows NT.

    Проект T-Система - система программирования и run-time среда, реализующие автоматическое динамическое распараллеливание программ. Разрабатывается в ИПС РАН (Переславль-Залесский). В рамках проекта создан специальный язык t2cp - функциональное расширение С. Система ориентирована на задачи с динамическим (скрытым до момента запуска) параллелизмом. В настоящее время T-система реализована для TCP/IP-сети Linux-компьютеров (в т.ч. SMP).

    Проект MOSIX - программный модуль для поддержки кластерных вычислений на Linux. Разрабатывается в Hebrew University (Израиль). Обеспечивает элементы NUMA-функциональности на кластере. Встроены алгоритмы автоматического распределения загрузки. Программное обеспечение доступно бесплатно.

    ВНИМАНИЕ! Если вы знаете о других интересных статьях, Web-страницах или новостях, посвященных параллельным вычислениям на кластерах - присылайте, пожалуйста, ссылки. Все Ваши замечания по поводу этого документа будут с благодарностью приняты.

    Author Image

    Для эффективной работы многим из нас требуется современное аппаратное и программное обеспечение. Поэтому приходится идти в ногу с последними новинками техники. Но что делать с устаревшим оборудованием? Выбрасывать старую технику на свалку или убирать в дальний угол кажется расточительным. Более эффективное решение — построить из старого оборудования кластер Beowulf для ускорения вычислений.

    О кластерах Beowulf

    Что требуется для настройки кластера?

    В первую очередь нам потребуется оборудование, которое мы собираемся использовать. Для этой статьи мы воспользовались нашими старыми верными ноутбуками, но с тем же успехом мы могли взять старые ПК или серверы. В любом случае, при построении кластера Beowulf желательно, чтобы его узлы состояли из сходного оборудования. Наши ноутбуки далеко не самые быстрые — на них установлены процессоры Intel® T2400 с тактовой частотой 1,83 ГГц и по 2 ГБ оперативной памяти. Они также снабжены сетевыми картами Ethernet, которые мы используем для соединения компьютеров в кластер. Для этого нам также потребуется коммутатор. Мы воспользовались старым коммутатором HP® 1800, но и здесь мы могли использовать обычную потребительскую технику (например, пятипортовый коммутатор для домашнего офиса) в зависимости от того, сколько узлов будет в нашем кластере.

    Кластер Beowulf из старого коммутатора и шести старых ноутбуков


    Наш кластер Beowulf построен из шести старых ноутбуков и старого коммутатора.

    Так как кластер Beowulf, согласно определению выше, должен использовать операционную систему с открытым исходным кодом, мы установили на ноутбуки дистрибутивы Linux®. Несмотря на то, что существуют операционные системы, специально предназначенные для кластерных вычислений на Beowulf, можно воспользоваться и обычной серверной операционной системой, такой как Debian®.

    Настройка кластера Beowulf и установка COMSOL Multiphysics

    Для нашего кластера мы выбрали Debian® Stable 6 — один из дистрибутивов, поддерживаемых в COMSOL Multiphysics на момент написания статьи. Далее мы перешли к настройке систем. В нашем сценарии мы попытались обойтись минимумом программ, установив только базовую систему с дополнительным сервером SSH для доступа к кластеру по сети. Графическая оболочка в нашем случае не требуется — она бы только снизила производительность нашей системы Beowulf.

    После успешной установки операционной системы нам потребовалось настроить сеть и, конечно же, кластерную файловую систему для всех вычислительных узлов. Мы установили сервер NFS для кластерной файловой системы на первом узле, который будет работать как главный узел. После этого мы экспортировали оттуда пути к папкам для совместно используемой файловой системы. Один из примеров настройки:

    Мы автоматически смонтировали эти совместно используемые файловые ресурсы на вычислительных узлах.

    Так как на наших системах не установлена графическая оболочка, мы воспользуемся автоматизированным установщиком (см. стр. 77 COMSOL Multiphysics Installation Guide, руководства по установке COMSOL Multiphysics на английском языке).

    Для нашей задачи мы изменили файл setupconfig.ini из установочного пакета. Самый важный шаг — изменить значение параметра showgui с 1 на 0. Кроме этого, важно указать путь назначения.

    После этого запускается текстовый установщик, который выводит информацию в командной строке. Чтобы указать COMSOL Multiphysics, какие вычислительные узлы можно использовать, нам потребуется написать простой файл mpd.hosts, содержащий список имен узлов:

    Наконец, мы запускаем COMSOL Server на первом узле кластера из шести узлов:

    Теперь вы можете запустить COMSOL Multiphysics на своем компьютере и подключиться к серверу.

    Результаты налицо: повышение производительности на старом оборудовании

    Чтобы проверить работу нашего нового кластера, мы выбрали модифицированный вариант модели камертона (Tuning Fork), доступной в Галерее моделей. Для тестового запуска мы решили увеличить число параметров, вычисляемых при параметрическом анализе, до 48. После этого мы рассчитали модель с помощью команды batch в COMSOL Multiphysics, которая могла использовать от одного до шести ноутбуков. Вы можете увидеть статистику по выполненным задачам моделирования в сутки на графике ниже.

    Гистограмма, показывающая прирост производительности при использовании кластеров Beowulf с COMSOL Multiphysics


    Увеличение производительности (в задачах в сутки) с учетом полного времени от открытия файла до сохранения результата для разного числа используемых ноутбуков.

    Как вы можете видеть, шесть ноутбуков могут решить почти 140 задач в сутки, а один ноутбук — не более 40 задач в сутки. В целом, мы ускорили работу почти в 3,5 раза. Учитывая то, что мы использовали старые ноутбуки, это впечатляющий результат.

    Стоит заметить, правда, что измеряется не время решения задачи, а полное время выполнения моделирования. Оно включает в себя открытие, расчет и сохранение модели. Чтение и запись по своей природе — последовательные задачи, и закон Амдала (о котором мы упоминали в более ранней статье о пакетном анализе) говорит, что мы не видим истинного роста производительности решателя. Если мы дополним наш кластер Beowulf функциональными возможностями COMSOL Client/Server и еще раз сравним время вычисления, мы получим еще больший прирост производительности, чем показанный выше.

    Таким образом, мы действительно можем использовать нашу старую технику для COMSOL Multiphysics, чтобы повысить производительность и ускорить вычисления, особенно параметрические.


    Наш эксперт. Дэ­ви­да Хей­вор­да вы­рас­ти­ли тю­ле­ни, при­род­ные вра­ги пин­гви­нов, но это от­нюдь не ме­ша­ло ему лю­бить Linux.

    • Как ми­ни­мум два ком­пь­ю­те­ра.
    • Два эк­зем­п­ля­ра BCCD на дис­ке или на USB-брел­ке. ISO-об­раз есть на на­шем DVD.
    • Ло­каль­ная про­вод­ная сеть с дос­ту­пом к Ин­тер­не­ту и DHCP.
    • Но­мер ва­шей лю­би­мой ко­ман­ды Folding@Home, ли­бо – ми­ло­сти про­сим в ко­ман­ду LXF, 217805.

    Кла­сте­ри­за­ция для всех

    Конеч­но, на са­мом де­ле все немно­го сложнее, но за­бе­рись мы в деб­ри су­пер­ком­пь­ю­те­ров и кла­сте­ри­за­ции, на рас­сказ ушел бы весь день; по­это­му не бу­дем. Обыч­но мы пред­став­ля­ем се­бе су­пер­ком­пь­ю­те­ры (или кла­сте­ры, как мы бу­дем на­зы­вать их да­лее) как что-то недоступ­ное нам, про­стым смерт­ным, и при­над­ле­жа­щее по­лу­бо­гам IT, чья ра­бо­та – оби­тать в тем­ных угол­ках сер­вер­ных ком­нат, спря­тан­ных глу­бо­ко во внут­рен­но­стях ог­ром­ных кор­по­ра­ций, кор­мить кла­сте­ры и удов­ле­тво­рять их по­треб­но­сти.

    На са­мом де­ле все со­всем не так, по крайней ме­ре, в основ­ном, но до са­мых недавних пор кла­сте­ри­за­ция бы­ла недоступ­на обыч­ным лю­дям. С по­яв­лением Linux и бес­плат­ных от­кры­тых опе­ра­ци­он­ных сис­тем ка­ж­дый, у ко­го есть немно­го знаний и по мень­шей ме­ре па­ра ком­пь­ю­те­ров, мо­жет успеш­но соз­дать кла­стер и поль­зо­вать­ся им поч­ти так же, как это де­ла­ют в NASA. Кла­сте­ры мож­но при­ме­нять для ре­шения мно­гих по­все­днев­ных за­дач, сто­ит толь­ко за­хо­теть. В кла­сте­рах вы­со­кой доступ­но­сти HA (High Availability) есть из­бы­точ­ные уз­лы, вво­ди­мые в дей­ст­вие, ес­ли дру­гой узел вы­хо­дит из строя. Они ис­поль­зу­ют­ся в основ­ном для ра­бо­чих це­лей, но вы мо­же­те поль­зо­вать­ся ими и до­ма, на­при­мер, для за­пуска web-хостин­га.

    У вас мо­жет быть кла­стер хранения фай­лов, ко­то­рый пре­достав­ля­ет дис­ко­вое про­стран­ст­во для ис­поль­зо­вания несколь­ки­ми ком­пь­ю­те­ра­ми че­рез сеть – до­ма его мож­но ис­поль­зо­вать как сер­вер муль­ти­ме­диа. Эта идея ле­жит в осно­ве мно­гих по­пу­ляр­ных об­лач­ных сер­ви­сов.

    У нас мо­жет быть кла­стер об­ра­бот­ки дан­ных, или вы­чис­ли­тель­ный кла­стер. Он ис­поль­зу­ет цик­лы про­стоя про­цес­со­ров на ка­ж­дом уз­ле для вы­полнения вы­чис­лений или мо­де­ли­ро­вания. По­следним мы и зай­мем­ся да­лее, за­пустив его по­верх на­шей локаль­ной се­ти и ис­поль­зуя доступ­ные нам ре­сур­сы. По­доб­ная ар­хи­тек­ту­ра так­же из­вест­на как кла­стер Бе­о­вульф.

    Folding@Home

    Пер­вые ша­ги к успе­ху кла­сте­ра

    Сле­дую­щий пункт в спи­ске – эк­зем­п­ляр 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

    Вслед за этим дол­жен поя­вить­ся ра­бо­чий стол BCCD. Ес­ли это­го не про­ис­хо­дит и вы остае­тесь в тек­сто­вом ре­жи­ме, при­чи­на, воз­мож­но, в том, что не уда­лось за­гру­зить X-сер­вер; в этом слу­чае на­бе­ри­те startx и по­до­ж­ди­те, по­ка ра­бо­чий стол за­гру­зит­ся. Ес­ли все прой­дет успеш­но, вы уви­дите на экране нечто вроде рис. 3.

    Про­по­ло­щем, по­сти­ра­ем, по­вто­рим

    От­лич­но, пер­вый барь­ер пре­одо­лен. Ос­тавь­те пер­вый ком­пь­ю­тер и пе­рей­ди­те ко вто­ро­му, он же – узел 2. По­вто­ри­те те же дей­ст­вия: пустой па­роль и т. д. Се­те­вая кар­та долж­на по­лу­чить дру­гой IP-ад­рес (ес­ли нет, пе­ре­за­гру­зи­тесь и по­про­буй­те сно­ва), и че­рез ми­ну­ту или две вы долж­ны смот­реть на два оди­на­ко­вых ра­бо­чих сто­ла BCCD.

    Соз­дание кла­сте­ра

    Пре­ж­де чем на­чать сме­ять­ся злоб­ным сме­хом и гла­дить бе­лую кош­ку, на­бе­рем несколь­ко команд, с целью убе­дить­ся, что два ком­пь­ю­те­ра мо­гут свя­зать­ся друг с дру­гом и кла­стер бу­дет ра­бо­тать. На глав­ном уз­ле в верхнем окне Тер­ми­нал [Terminal] RXVT (с чер­ным фо­ном) вве­ди­те сле­дую­щие ко­ман­ды:

    Эта ко­ман­да со­бе­рет клю­чи SSH хостов, что по­зво­лит об­менивать­ся дан­ны­ми ме­ж­ду дву­мя хоста­ми без вво­да па­ро­лей. Те­перь вве­ди­те ко­ман­ду:

    Она соз­даст или пе­ре­за­пи­шет файл machines, ис­поль­зуе­мый про­грам­мой MPI – под­робнее о ней чуть поз­же. Сде­лай­те то же са­мое на уз­ле 2; хо­тя в тео­рии это­го не тре­бу­ет­ся, мы об­на­ру­жи­ли. что BCCD луч­ше ра­бо­та­ет с оди­на­ко­вы­ми фай­ла­ми machines. Ес­ли вам ин­те­рес­но, что в этом фай­ле, на­бе­ри­те в окне тер­ми­на­ла глав­но­го уз­ла ко­ман­ду:

    и на­жми­те Enter.

    Раз­во­ра­чи­ва­ем FAH

    Ос­во­ить FAH нетруд­но. Несмотря на то, что последняя вер­сия – 7, мы восполь­зу­ем­ся вер­си­ей 6, так как она уж точ­но ра­бо­та­ет с BCCD. На глав­ном уз­ле вве­ди­те сле­дую­щую ко­ман­ду в окне тер­ми­на­ла:

    mkdir -p ~/folding

    Соз­да­ст­ся ка­та­лог folding с ро­ди­тель­ски­ми ка­та­ло­га­ми (при необ­хо­ди­мо­сти). За­тем вы­полните ко­ман­ду

    Вы пе­рей­де­те в но­вый ка­та­лог folding. Ко­ман­да

    за­гру­зит кли­ент FAH в 32-бит­ной вер­сии с внеш­не­го сер­ве­ра. Ко­ман­да

    tar xzf FAH6.02-Linux.tgz /

    рас­па­ку­ет ар­хив и из­вле­чет не­об­хо­ди­мые фай­лы.

    Те­перь у нас есть кли­ент, и его нуж­но на­стро­ить для ра­бо­ты в BCCD. Для это­го вве­ди­те сле­дую­щую ко­ман­ду:

    Она сде­ла­ет про­грам­му fah6 ис­пол­няе­мой. На­конец, нуж­но сде­лать так, что­бы кли­ент ра­бо­тал с долж­ной ко­ман­дой уча­стников и именем поль­зо­ва­те­ля. Вве­ди­те ко­ман­ду:

    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 [За­дания > Раз­мно­жить] и в команд­ной стро­ке на­бе­ри­те:

    По­смот­ри­те на раз­лич­ные пред­став­ления – они долж­ны дать вам приблизительное понятие о про­ис­хо­дящих там процессах.

    Ос­таль­ное – за ва­ми: как да­ле­ко вы намерены зай­ти в этом про­ек­те? Есть ли у вас дру­гие ком­пь­ю­те­ры, ко­то­рые мож­но до­ба­вить в кла­стер? Что бы вы ни ре­ши­ли, помните, что здесь мы толь­ко косну­лись по­верх­но­сти, по­это­му дви­гай­тесь даль­ше и учреждай­те кла­сте­ры во славу Linux Format.

    Кла­стер по име­ни.

    BCCD – не един­ст­вен­ная кла­стер­ная сис­те­ма. На по­ис­ки в се­ти мож­но по­тра­тить це­лый день, но что­бы вы не слиш­ком на­пря­га­ли гла­за, вот еще не­сколь­ко:

    Од­ни кла­сте­ры луч­ше, дру­гие ху­же, но обя­за­тель­но прогуляйтесь на их сай­ты и убе­ди­тесь, что про­ек­ты еще жи­вы и раз­ви­ва­ют­ся.

    Рас­пре­де­лен­ные вы­чис­ле­ния

    Ес­ли вам почeму-ли­бо не нра­вит­ся FAH или вы не со­глас­ны с ним, вот крат­кий спи­сок дру­гих все­мир­ных про­ек­тов па­рал­лель­ных вы­чис­ле­ний:

    > SETI@Home – по­иск вне­зем­ных ци­ви­ли­за­ций с SETI.

    > Docking@home – мо­дель до­кин­га (сты­ков­ки) мо­ле­кул бел­ка.

    > AQUA@home – ис­поль­зу­ет Quantum Monte Cairo для пред­ска­за­ния про­из­во­ди­тель­но­сти сверх­про­вод­ни­ко­вых адиа­ба­ти­че­ских кван­то­вых ком­пь­ю­те­ров. Кхе.

    > Einstein@home – к со­жа­ле­нию, не мо­дель са­мо­го ге­ния в натуральную величину, а по­иск гра­ви­та­ци­он­ных волн.

    Про­ек­тами буквально полнится Интернет – уве­рен, вам удастся най­ти что-нибудь для се­бя.|

    Читайте также: