1 Параллельные вычисления

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

С чего начать? С чего БЫСТРО начать?

Тема увеличения скорости вычислений весьма актуальна для всех тех, чья деятельность связана с большим объемом вычислительных работ. Так, например, рассчеты гравитирующих газовых дисков, которыми я в свое время занимался, зачастую требуют нескольких месяцев непрерывного счета на машине класса iPIII. В середине 80х, будучи студентом, выбрав для себя в качестве специализации теоретическую астрофизику, я напрямую столкнулся с проблемой быстродействия. Но, ни тогда, ни даже сейчас у российских университетов чаще всего нет средств для закупки мощных компьютеров типа nCube, Cray или подобных. Однако с развитием программного обеспечения и появлением свободно распространяемой операционной системы Linux стало возможным создать вычислительный комплекс с эффективным быстродействием, сравнимым с быстродействием суперкомпьютеров, но со стоимостью в десятки раз меньшей.

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

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

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

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

В самом деле, кластеры Beowulf обеспечивают университеты с ограниченными ресурсами хорошей платформой для изучения параллельного программирования и недорогой производительной вычислительной системой для ученых. Затраты на установку в университетах минмиальны: многие студенты заинтересованы в таких проектах и используют Linux на собственных компьютерах, установка кластера и написание параллельных программ является частью процесса обучения.

Beowulf Beowulf - это мультикомпьютерная архитектура, которая может использоваться для параллельных вычислений. Это система, обычно состоящая из одного серверного узла и одного или более клиентских узлов, соединенных при помощи Ethernet или некоторой другой сети. Это система, построенная из готовых промышленных компонент, например ПЭВМ, на которых может работать ОС Linux, стандартных адаптеров Ethernet и коммутаторов. Она не содержит специфических аппаратных компонентов и легко воспроизводима. Beowulf также использует программные продукты, такие как ОС Linux, среды программирования Parallel Virtual Machine (PVM) и Message Passing Interface (MPI). Серверный узел управляет всем кластером и является файл-сервером для клиентских узлов. Он также является консолью кластера и шлюзом во внешнюю сеть. Большие системы Beowulf могут иметь более одного серверного узла, а также возможно специализированные узлы, например, консоли или станции мониторинга. В большинстве случаев клиентские узлы в Beowulf пассивны. Они конфигурируются и управляются серверными узлами и выполняют только то, что предписано серверным узлом. В бездисковой конфигурации клиентов, клиентские узлы даже не имеют IP-адресов или имен, пока их не назначит сервер. Одно из основных отличий Beowulf от кластера рабочих станций состоит также в том, что Beowulf работает как одна машина. В большинстве случаев клиентские узлы не имеют клавиатур и мониторов, и могут быть доступны только через удаленное подключение. Узлы Beowulf могут рассматриваться как элементы процессор+память, которые вставляются в кластер так же как процессор или модуль памяти вставляются в материнскую плату.

Комплекс работает под операционной системой Linux. Отказ от использования каких-либо специальных hardware-компонентов делает архитектуру Beowulf легко воспроизводимой и имеющей уникальное соотношение быстродействие/стоимость.

Beowulf - это не специфический пакет программ, новая топология сети или новейшая модификация ядра ОС. Beowulf - это технология кластеризации компьютеров, работающих под управлением ОС Linux в разновидность параллельного, виртуального суперкомпьютера. Хотя существует много программных пакетов, таких как модификации ядра, библиотеки PVM и MPI и конфигурационные утилиты, которые делают архитектуру Beowulf более быстрой, простой в конфигурировании и эффективной, можно построить машину класса Beowulf, используя только стандартный дистрибутив Linux, без какого либо дополнительного математического обеспечения. Если имеются два соединенные сетью компьютера под ОС Linux, которые разделяют по меньшей мере файловую систему /home при помощи NFS, и позволяют друг другу выполнять удаленный шелл (rsh), то можно говорить, что это простой кластер Beowulf из двух узлов.

Кроме Beowulf, известна еще одна близкая кластерная технология - NOW. В NOW персональные компьютеры обычно содержат информацию о самих себе и поставленных перед ними задачах, а в обязанности системного администратора такого кластера входит формирование данной информации. Кластеры Beowulf в этом отношении (то есть с точки зрения системного администратора) проще: там отдельные узлы не знают о конфигурации кластера. Лишь один выделенный узел содержит информацию о конфигурации; и только он имеет связь по сети с внешним миром. Все остальные узлы кластера объединены локальной сетью, и с внешним миром их связывает только "тоненький мостик" от управляющего узла.

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


Copyright © 1998-2011 Юрий Сбитнев