Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
met_apos.doc
Скачиваний:
19
Добавлен:
25.03.2015
Размер:
1.44 Mб
Скачать

13 Организация систем распределенного вычисления

Цель работы: Описание современных высокопроизводительных вычислительных платформ и проектов

Краткая теоретическая справка

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

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

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

Если все входящие в состав вычислительного кластера узлы имеют одну и ту же архитектуру и производительность, то мы имеем дело с однородным вычислительным кластером. Иначе – с неоднородным.

С точки зрения разработки прикладных параллельных программ нет каких-либо принципиальных различий между однородными кластерами и MPP, такими как IBM SP-2. Различие, в основном, заключается в большей доступности и меньшей стоимости кластеров по сравнению с мультипроцессорными ЭВМ с распределенной памятью, в которых используются специальные коммуникационные системы и специализированные узлы.

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

Неоднородность же вносит следующие серьезные проблемы.

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

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

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

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

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

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

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

С 1992 года, когда мультикомпьютеры стали самыми производительными вычислительными системами, резко возрос интерес к проблеме разработки для них параллельных прикладных программ. К этому моменту уже было ясно, что трудоемкость разработки прикладных программ для многопроцессорных систем с распределенной памятью является главным препятствием для их широкого внедрения. За прошедший с тех пор период предложено много различных подходов к разработке параллельных программ, созданы десятки различных языков параллельного программирования и множество различных инструментальных средств. Среди них можно отметить следующие интересные отечественные разработки – Норма, Fortran-GNS, Fortran-DVM, mpC, Т-система.

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

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

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

Укрупнение распределяемых порций работы требует анализа более крупных фрагментов программы, обычно включающих в себя вызовы различных процедур. Это, в свою очередь, требует сложного межпроцедурного анализа. Поскольку в реальных программах на языке Фортран могут использоваться конструкции, статический анализ которых принципиально невозможен (например, косвенная индексация элементов массивов), то с увеличением порций распределяемой работы увеличивается вероятность того, что распараллеливатель откажется распараллеливать те конструкции, которые на самом деле допускают параллельное выполнение.

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

В третьих, распределение вычислений и данных должно быть произведено согласованно.

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

Пример выполнения работы

Проект SETI@Home. Расставляем Сети на внеземной разум

В последнее время значительно вырос интерес Интернет-сообщества к различным проектам распределенных вычислений, начиная от поиска лекарства от рака, и заканчивая взломом различного рода криптоалгоритмов. В этой статье я хочу рассказать об одном из старейших таких проектов, старт которого пришелся на начало 1999 года. - SETI@Home. В данном контексте "seti" обозначает не упорядоченное переплетение веревочек для ловли рыбы, и даже не компьютерные сети. SETI - это "Search for Extraterrestrial Intelligence". Научное направление в рамках биоастрономии, направленное на поиск Внеземного разума. Спонсорами даного проекта выступают Университет Калифорнии, корпорации IBM, Sun, Quantum, SCO и другие.

Немного о технической составляющей. Радиотелескоп Areciboв Пуэрто-Рико, размер тарелки которого в поперечнике - 305 метров, ежедневно записывает порядка 35 Гбайт необработанных данных в 2.5-мегагерцовой полосе вокруг 1420 МГц. Этот спектр делится на 10-килогерцовые куски длительностью 107 секунд, что вместе со служебной информацией составляет порядка 340 Кбайт исходных данных - блока, получаемого клиентской частью - скринсэйвером, работающим на компьютере участника проекта (рисунок 13.1).

Клиент-скринсэйвер может работать в двух режимах. Либо занимать ресурсы процессора только тогда, когда включается экранная заставка, либо работая постоянно с минимальным приоритетом в системе. Клиент SETI@Home требует интернет-соединение только для получения блока данных и отправки результатов обработки обратно.

Рисунок 13.1 – Работа клиента SETI@Home

Программа выделяет узкополосные "гауссовские" сигналы, возрастающие, достигающие максимума, и затухающие за период прохождения источника такого сигнала фокусом телескопа (примерно 10 секунд). Путем "перекрытия" данных отсекаются земные источники сигналов. Анализ производится методом быстрого преобразования Фурье. Кроме того, производится ряд операций уже после получения командой проекта обработанных данных, включая сравнение сигналов с постоянно обновляемой базой известных помехопостановщиков, и, в необходимых случаях, перепроверкой. Методы и научная составляющая проекта - слишком обширная тема для нашей статьи, поэтому за подробностями я отправляю читателя на сайт проекта http://setiathome.berkeley.edu/. Единственное, скажу, что научный план был одобрен в далеком уже 1996 году на V международной конференции по биоастрономии.

Вступаем в сообщество

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

С сайта SETI@HOMEпо ссылкеDownloadкачаем клиент под установленную на компьютере операционную систему. Для случая с любой версией Windows это будет файл setiathome_win_3_08.exe. Это и есть наш скринсэйвер, который во время обсчета блоков данных будет радовать взор разноцветным трехмерным графиком.

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

Далее клиент спрашивает новый ли мы пользователь или "вернувшийся". Соглашаемся на нового. В следующем окне предлагается ввести данные о себе: имя или ник, адрес электронной почты, страну, почтовый индекс, и место расположения компьютера: школа, работа, дом. Жмем "Submit", и в главном окне программы получаем сообщение о том, что идет процесс регистрации. После чего начинается закачка нашего первого блока данных с сервера. Теперь можно закрыть окошко, а в трее рядом с часами появится симпатичный маленький радиотелескопчик зеленого цвета (видимо по цвету кожи ищущихся инопланетных человечков). В любой момент дважды, "щелкнув" по значку, можно вызвать главное окно программы (демонстрируемое и в качестве скринсэйвера), и полюбоваться графиком, а также своей статистикой.

Нельзя не упомянуть, что всегда на сайте проекта можно посмотреть свою актуальную статистику и вступить в какую-нибудь т.н. "группу", чтобы коллективно побороться за высокий результат работы в проекте. Рекомендую присоединиться к крупнейшей российской группе Team Russia. Найти группу (по названию) или пользователя (по e-mail) можно зайдя в форму поиска в разделе User Zone - соответственно Groups или User Profile. Также можно отредактировать свой профиль, зайдя по ссылке User account.

SETI@Home в локальной seti

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

В таких ситуациях будет незаменим специальный прокси - сервер, созданный для проекта. Изначально нам понадобиться хотя бы один компьютер, работающий под ОС семейства Windows и имеющий доступ в Интернет. Идем по адресу http://www.setiqueue.org/, и в разделе Download забираем двух мегабайтный дистрибутив программы SETIQueue (на момент написания статьи последняя версия - 3.03.2.2b). Разархивируем zip-файл и запускаем setup.exe - обычный Windows-инсталлятор, который поставит нам сервер в указанный каталог и создаст в папке Startup иконку для автоматического запуска при загрузке системы. Должен заметить, что разработчик не предусмотрел существование локализованных ОС, и в случае с русской версией Windows необходимо вручную перетащить ярлычок SETIQueue в папку Автозагрузка (есть вариант запуска и как сервиса).

Настраиваем сервер. Запускаем программу ярлычком, и идем в меню Settings - HTTP Server. Там задаем пароль пользователя admin, который имеет право изменять установки, а также можно задать подсеть и IP, с которых будет доступен наш прокси. На этом настройку из интерфейса мы закончим, а все дальнейшие операции выполним через браузер, зайдя с любой доступной машины своей подсети и введя в строке адреса IP (или имя) компьютера, на который поставили SETIQueue, и порт по умолчанию - 5517. Локально можно зайти, введя http://localhost:5517/ .

Как уже стало ясно, программа включает в себя HTTP сервер, благодаря которому статистику могут посмотреть все пользователи сети, а мы можем управлять с любого компьютера, введя ранее заданный пароль, что и сделаем, перейдя по ссылке Login меню в левой части открывшегося экрана броузера для пользователя admin.

После этого следуем в подпункт Settings пункта меню General. Для работоспособности нашего прокси никаких настроек не требуется, но никто не мешает поменять выставленные по умолчанию значения, например время хранения логов, или ввести свое имя и e-mail для участия в Top 100 на сайте авторов прокси. Здесь же, если доступ самого SETIQueue в Интернет осуществляется через какой-то общий прокси-сервер локальной сети можно ввести IP.

Помимо меню Settings есть меню отчетов (Reports) с подпунктами по пользователям, очередям запросов, клиентам и общий отчет. Кроме того, в подменю Stats можно просмотреть различные виды статистической информации, в том числе карту звездного неба с отмеченными координатами ваших обработанных блоков. В меню WUs содержится информация по конкретным блокам, а в Logs - соответственно логи работы сервера.

Итак, теперь наш сервер настроен. Осталось установить на клиентах IP-адрес и порт (5517) нашего нового сервера. Да, и еще - не пугайтесь, когда после первого отправленного блока через прокси статистика и имя пользователя на клиенте сбросится. Эта информация появится после второго отправленного результата.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]