Академический Документы
Профессиональный Документы
Культура Документы
Классификация кластеров
Кластеры высокой доступности. Обозначаются аббревиатурой HA (англ. High
Availability — высокая доступность). Создаются для обеспечения высокой доступности
сервиса, предоставляемого кластером. Избыточное число узлов, входящих в кластер,
гарантирует предоставление сервиса в случае отказа одного или нескольких серверов.
Типичное число узлов — два, это минимальное количество, приводящее к повышению
доступности. Создано множество программных решений для построения такого рода
кластеров. В частности, для OpenVMS, GNU/Linux, FreeBSD и Solaris существует проект
бесплатного ПО Linux-HA.
Кластеры распределения нагрузки. Принцип их действия строится на
распределении запросов через один или несколько входных узлов, которые
перенаправляют их на обработку в остальные, вычислительные узлы. Первоначальная
цель такого кластера — производительность, однако, в них часто используются также и
методы, повышающие надёжность. Подобные конструкции называются серверными
фермами. Программное обеспечение (ПО) может быть как коммерческим (OpenVMS,
MOSIX, Cluster, Platform LSF HPC, Sun Grid Engine, Moab Cluster Suite, Maui Cluster
Scheduler), так и бесплатным (Linux Virtual Server).
Вычислительные кластеры. Кластеры используются в вычислительных целях, в
частности в научных исследованиях. Для вычислительных кластеров существенными
показателями являются высокая производительность процессора в операциях над числами
с плавающей точкой (flops) и низкая латентность объединяющей сети, и менее
существенными — скорость операций ввода-вывода, которая в большей степени важна
для баз данных и web-сервисов. Вычислительные кластеры позволяют уменьшить время
расчетов, по сравнению с одиночным компьютером, разбивая задание на параллельно
выполняющиеся ветки, которые обмениваются данными по связывающей сети. Одна из
типичных конфигураций — набор компьютеров, собранных из общедоступных
компонентов, с установленной на них операционной системой Linux, и связанных сетью
Ethernet, Myrinet, InfiniBand или другими относительно недорогими сетями. Такую
систему принято называть кластером Beowulf. Специально выделяют
высокопроизводительные кластеры (Обозначаются англ. аббревиатурой HPC Cluster —
High-performance computing cluster). Список самых мощных высокопроизводительных
компьютеров (также может обозначаться англ. аббревиатурой HPC) можно найти в
мировом рейтинге TOP500. В России ведется рейтинг самых мощных компьютеров СНГ
TOP50 Суперкомпьютеры.
Системы распределенных вычислений (grid). Такие системы не принято считать
кластерами, но их принципы в значительной степени сходны с кластерной технологией.
Их также называют grid-системами. Главное отличие — низкая доступность каждого узла,
то есть невозможность гарантировать его работу в заданный момент времени (узлы
подключаются и отключаются в процессе работы), поэтому задача должна быть разбита
на ряд независимых друг от друга процессов. Такая система, в отличие от кластеров, не
похожа на единый компьютер, а служит упрощённым средством распределения
вычислений. Нестабильность конфигурации, в таком случае, компенсируется большим
числом узлов.
Самые производительные
Дважды в год организацией TOP500 публикуется список пятисот самых
производительных вычислительных систем в мире, среди которых последнее время
преобладают кластеры. Самым быстрым является кластер IBM Roadrunner (Лос-
Аламосская национальная лаборатория, США, созданный в 2008), его максимальная
производительность (на июль 2008) составляет 1,026 Петафлопа. Самая быстрая система в
Европе (на июль 2008) — суперкомпьютер, BlueGene/P находится в Федеративной
Республике Германия, в исследовательском центре города Юлих, земля Северный Рейн-
Вестфалия, максимально достигнутая производительность 167,3 Терафлопа.
Кластерные системы занимают достойное место в списке самых быстрых, при этом
значительно выигрывая у суперкомпьютеров в цене. На июль 2008 на 7 месте рейтинга
TOP500 находится кластер SGI Altix ICE 8200 (Chippewa Falls, шт. Висконсин, США).
Сравнительно дешёвую альтернативу суперкомпьютерам представляют кластеры,
основанные на концепции Beowulf, которые строятся из обыкновенных недорогих
компьютеров на основе бесплатного программного обеспечения. Один из практических
примеров такой системы — Stone Soupercomputer (Оак Ридж, шт. Теннесси, США, 1997).
Крупнейший кластер, принадлежащий частному лицу (из 1000 процессоров), был
построен Джоном Козой (John Koza).
Высокопроизводительные кластеры (high performance computing clusters, HPC) –
один из типов высокопроизводительных суперкомпьютеров, обладающий достаточно
существенной особенностью – гораздо меньшей ценой по сравнению с большими
параллельными системами.
Кластеры для высокопроизводительных вычислений реализуют
мультикомпьютерную архитектуру для параллельных вычислений и состоят из одного
(реже – нескольких) управляющего узла (master node) и вычислительных узлов (compute
nodes), объединенных между собой частной высокоскоростной сетью. Узлы такого
кластера представляют собой обычные рабочие станции или серверы с установленным на
них специализированным ПО – на базе ОС Linux или Windows.
Проекты на основе кластеров.
Самым известным проектом на основе кластеров является проект 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 тыс.
В рамках проекта Beowulf был разработан ряд высокопроизводительных и
специализированных сетевых драйверов (в частности, драйвер для использования
нескольких Ethernet-каналов одновременно).
Изначательно термин "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").
Другие интересные проекты на основе кластеров.
Проект Berkeley NOW (Network Of Workstations) - технология, очень похожая на
Beowulf, разработана в университете шт. Калифорния в Беркли. В 1997 году на кластере
из 100 рабочих станций на базе UltraSPARC была достигнута производительность в
10GFLOPS по LINPACK, что позволило ему войти в 200 самых мощных компьютеров
мира. Проект официально завершен в мае 1998 года. Доступно разработанное в рамках
проекта ПО, в том числе ОС GLUnix (специализированная версия UNIX), система
передачи сообщений Active Messages, реализация MPI и др.
Доступна статья "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-
функциональности на кластере. Встроены алгоритмы автоматического распределения
загрузки. Программное обеспечение доступно бесплатно.
В России на сегодняшний момент самым известным является
Высокопроизводительный вычислительный кластер ННГУ
Для проведения вычислительных экспериментов использовался вычислительный
кластер Нижегородского университета, оборудование для которого было передано в
рамках Академической программы Интел в 2001 г. В состав кластера входит (см. рис. 1.3):
2 вычислительных сервера, каждый из которых имеет 4 процессора Intel Pentium III
700 Мгц, 512 MB RAM, 10 GB HDD, 1 Гбит Ethernet card;
12 вычислительных серверов, каждый из которых имеет 2 процессора Intel Pentium
III 1000 Мгц, 256 MB RAM, 10 GB HDD, 1 Гбит Ethernet card;
12 рабочих станций на базе процессора Intel Pentium 4 1300 Мгц, 256 MB RAM, 10
GB HDD, CD-ROM, монитор 15", 10/100 Fast Ethernet card.
Следует отметить, что в результате передачи подобного оборудования
Нижегородский госуниверситет оказался первым вузом в Восточной Европе, оснащенным
ПК на базе новейшего процессора INTEL® PENTIUM® 4.
Важной отличительной особенностью кластера является его неоднородность
(гетерогенность). В состав кластера входят рабочие места, оснащенные процессорами Intel
Pentium 4 и соединенные относительно медленной сетью (100 Мбит), а также
вычислительные 2- и 4- процессорные сервера, обмен данными между которыми
выполняется при помощи быстрых каналов передачи данных (1000 Мбит). В результате
кластер может использоваться не только для решения сложных вычислительно-
трудоемких задач, но также и для проведения различных экспериментов по исследованию
многопроцессорных кластерных систем и параллельных методов решения научно-
технических задач.
В качестве системной платформы для построения кластера выбраны современные
операционные системы семейства Microsoft Windows (для проведения отдельных
экспериментов имеется возможность использования ОС Unix).
Рис. 1.3. Структура вычислительного кластера Нижегородского университета
(Нажмите на изображение для его увеличения)
В результате принятых решений программное обеспечение кластера является
следующим:
вычислительные сервера работают под управлением ОС Microsoft Windows 2000
Advanced Server; на рабочих местах разработчиков установлена ОС Microsoft Windows
2000 Professional;
в качестве сред разработки используются Microsoft Visual Studio 6.0; для
выполнения исследовательских экспериментов возможно использование компилятора
Intel C++ Compiler 5.0, встраиваемого в среду Microsoft Visual Studio;
на рабочих местах разработчиков установлены библиотеки:
Plapack 3.0 (см. www.cs.utexas.edu/users/plapack);
MKL (см. developer.intel.com/software/products/mkl/index.htm);
в качестве средств передачи данных между процессорами установлены две
реализации стандарта MPI:
Argonne MPICH (www-unix.mcs.anl.gov/mpi/MPICH/);
MP-MPICH (www.lfbs.rwth-aachen.de/~joachim/MP-MPICH.html).
Как построить Beowulf? (Некоторые практические рекомендации по построению
параллельных кластеров).
Кластер состоит из отдельных машин (узлов) и объединяющей их сети
(коммутатора). Кроме ОС, необходимо установить и настроить сетевые драйверы,
компиляторы, ПО поддержки параллельного программирования и распределения
вычислительной нагрузки.
1. Узлы кластера. Подходящим выбором в данный момент являются системы на
базе процессоров Intel. Одну из машин следует выделить в качестве центральной
(головной) куда следует установить достаточно большой жесткий диск, возможно более
мощный процессор и больше памяти, чем на остальные (рабочие) узлы. Имеет смысл
обеспечить (защищенную) связь этой машины с внешним миром. Управляющий узел
кластера выполняет функции сервера с сетевой файловой системой (network file system,
NFS) и шлюза с «внешним» миром. При необходимости обеспечения высокой
отказоустойчивости управляющего узла, его реализуют в виде отказоустойчивого
кластера из двух серверов.
Поскольку вычислительные узлы системы предназначены для решения
вычислительных задач в параллельном режиме, они не нуждаются в подключении
монитора, клавиатуры, мыши. Иногда в зависимости от особенностей решаемых задач
такие узлы собираются и без жестких дисков, используя возможность загрузки
операционной системы по сети. Все управление вычислительными узлами осуществляется
через мастер-узел. Если эти узлы не будут одновременно использоваться в качестве
пользовательских рабочих мест, нет необходимости устанавливать на них видеокарты и
мониторы. Возможна установка узлов в стойки (rackmounting), что позволит уменьшить
место, занимаемое узлами, но будет стоить несколько дороже.
Возможна организация кластеров на базе уже существующих сетей рабочих
станций, т.е. рабочие станции пользователей могут использоваться в качестве узлов
кластера ночью и в выходные дни. Системы такого типа иногда называют COW (Cluster of
Workstations).
Количество узлов следует выбирать исходя из необходимых вычислительных
ресурсов и доступных финансовых средств. Следует понимать, что при большом числе
узлов придется также устанавливать более сложное и дорогое сетевое оборудование.
2. Сеть. В простейшем случае используется один сегмент Ethernet (10Mbit/sec на
витой паре). Однако дешевизна такой сети, вследствие коллизий оборачивается большими
накладными расходами на межпроцессорные обмены; а хорошую производительность
такого кластера следует ожидать только на задачах с очень простой параллельной
структурой и при очень редких взаимодействиях между процессами (например, перебор
вариантов).
Для получения хорошей производительности межпроцессорных обменов
используют полнодуплексный Fast Ethernet на 100Mbit/sec. При этом для уменьшения
числа коллизий или устанавливают несколько "параллельных" сегментов Ethernet, или
соединяют узлы кластера через коммутатор (switch).
Более дорогостоящим, но также популярным вариантом являются использование
коммутаторов типа Myrinet (1.28Gbit/sec, полный дуплекс). Менее популярными, но также
реально используемыми при построении кластеров сетевыми технологиями являются
технологии сLAN, SCI и Gigabit Ethernet.
Высокопроизводительные кластерные комплексы применяются для решения
геологоразведочных задач в нефтегазовой отрасли, наукоемких задач в образовательной
среде, прогнозирования гидрометеоусловий и природных катастроф, моделирования
различных физических и химических процессов, в том числе в автомобилестроении и на
других производствах, при расшифровке генной и вирусной информации в медицине и
биоинформатике. Благодаря тому, что такие мощные системы собираются из
стандартизованных блоков, они в первую очередь привлекательны своей низкой «входной
ценой» в область высокопроизводительных вычислений.
Вычислительные кластеры могут быть собраны из стандартных одно- и
двухпроцессорных серверов, а также могут быть поставлены в виде готовых
сконфигурированных и настроенных решений.
Как использовать возможности кластера?
Существует несколько способов задействовать вычислительные мощности
кластера.
1. Запускать множество однопроцессорных задач. Это может быть разумным
вариантом, если нужно провести множество независимых вычислительных экспериментов
с разными входными данными, причем срок проведения каждого отдельного расчета не
имеет значения, а все данные размещаются в объеме памяти, доступном одному процессу.
2. Запускать готовые параллельные программы. Для некоторых задач доступны
бесплатные или коммерческие параллельные программы, которые при необходимости Вы
можете использовать на кластере. Как правило, для этого достаточно, чтобы программа
была доступна в исходных текстах, реализована с использованием интерфейса MPI на
языках С/C++ или Фортран. Примеры свободно распространяемых параллельных
программ, реализованных с помощью MPI: GAMESS-US (квантовая химия), POVRay-MPI
(трассировка лучей).
3. Вызывать в своих программах параллельные библиотеки. Также для некоторых
областей, таких как линейная алгебра, доступны библиотеки, которые позволяют решать
широкий круг стандартных подзадач с использованием возможностей параллельной
обработки. Если обращение к таким подзадачам составляет большую часть
вычислительных операций программы, то использование такой параллельной библиотеки
позволит получить параллельную программу практически без написания собственного
параллельного кода. Примером такой библиотеки является SCALAPACK. Русскоязычное
руководство по использованию этой библиотеки и примеры можно найти на сервере по
численному анализу НИВЦ МГУ. Также доступна параллельная библиотека FFTW для
вычисления быстрых преобразований Фурье (БПФ). Информацию о других параллельных
библиотеках и программах, реализованных с помощью MPI, можно найти по адресу
http://www-unix.mcs.anl.gov/mpi/libraries.html.
4. Создавать собственные параллельные программы. Это наиболее трудоемкий, но
и наиболее универсальный способ. Существует два основных варианта. 1) Вставлять
параллельные конструкции в имеющиеся параллельные программы. 2) Создавать "с нуля"
параллельную программу.