КОМПЬЮТЕРЫ 

Что такое Beowulf?

(технология организации параллельных вычислений на Linux-кластерах)

Содержание документа


Для чего нужны кластеры?

Поставщики традиционных коммерческих суперкомпьютеров (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 - www.beowulf.org.

Откуда возник термин "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. Узлы кластера. Подходящим выбором в данный момент являются системы на базе процессоров Intel: Pentium II или Pentium II Xeon - или однопроцессорные ПК, или SMP-сервера с небольшим числом процессоров (2-4, возможно до 6). По некоторым причинам оптимальным считается построение кластеров на базе двухпроцессорных систем, несмотря на то, что в этом случае настройка кластера будет несколько сложнее (главным образом потому, что доcтупны относительно недорогие материнские платы для 2 процессоров Pentium II). Стоит установить на каждый узел 64-128MB оперативной памяти (для двухпроцессорных систем 64-256MB).

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

При комплектации рабочих узлов вполне возможно отказаться от жестких дисков - эти узлы будут загружать ОС через сеть с центральной машины, что, кроме экономии средств, позволяет сконфигурировать ОС и все необходимое ПО только 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").

3. Коммуникационные библиотеки. Наиболее распространенным интерфейсом параллельного программирования в модели передачи сообщений является MPI. Рекомендуемая бесплатная реализация MPI - пакет MPICH, разработанный в Аргоннской Национальной Лаборатории. Для кластеров на базе коммутатора Myrinet разработана система HPVM, куда также входит реализация MPI.

Для эффективной организации параллелизма внутри одной SMP-cистемы возможны два варианта:

  1. Для каждого процессора в SMP-машине порождается отдельный MPI-процесс. MPI-процессы внутри этой системы обмениваются сообщениями через разделяемую память (необходимо настроить MPICH соответствующим образом).
  2. На каждой машине запускается только один MPI-процесс. Внутри каждого MPI-процесса производится распараллеливание в модели "общей памяти", например с помощью директив OpenMP.

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

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


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

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

Русскоязычные

Англоязычные

Компании, предлагающие Beowulf-кластеры "под ключ"


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

Проект Berkeley NOW (Network Of Workstations) - технология, очень похожая на Beowulf, разработана в университете шт. Калифорния в Беркли. В 1997 году на кластере из 100 рабочих станций на базе UltraSPARC была достигнута производительность в 10GFLOPS по LINPACK, что позволило ему войти в 200 самых мощных компьютеров мира. Проект официально завершен в мае 1998 года. Доступно разработанное в рамках проекта ПО, в том числе ОС GLUnix (специализированная версия UNIX), система передачи сообщений Active Messages, реализация MPI и др.

Проект 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-страницах или новостях, посвященных параллельным вычислениям на кластерах - присылайте, пожалуйста, ссылки. Все Ваши замечания по поводу этого документа будут с благодарностью приняты.


© Лаборатория Параллельных информационных технологий НИВЦ МГУ
Rambler's Top100