Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Распределенные или параллельные?

Перед тем как начать изучение различных видов разветвления вычислительных процессов необходимо разобраться в базовых понятиях. Часто термин «распределенные вычисления» путают с термином «параллельные вычисления», иногда их ошибочно считают синонимами. Давайте разберемся чем отличаются эти два понятия.

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

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

Распределенная система — это набор независимых компьютеров, представляющиеся их пользователям единой объединенной системой. Эндрю Таненбаум[1]
Параллельные вычисления — вычисления, которые можно реализовать на многопроцессорных системах с использованием возможности одновременного выполнения многих действий, порождаемых процессом решения одной или многих задач. Словарь по кибернетике[2]


Явление открытых (добровольных) вычислительных систем (англ. volunteer computing) следует выделить в отдельную тему и рассматривать как практическую реализацию систем распределенного вычисления. Такие вычислительные системы (сети) чаще всего строятся на базе, так называемых GRID систем (сетей), в русском языке иногда называются как системы метакомпьютинга (матавычисления).[3]

Задачи и цели

Вследствие повсеместного использования вычислительной техники бурно развивается направление численного моделирования (англ. numerical simulation [4]). Численное моделирование, является промежуточным элементом между аналитическими методами изучения и физическими экспериментами.[5] Рост количества задач, для решения которых необходимо использовать параллельные вычисления, обусловлен:

  • возможностью изучать явления, которые являются либо слишком сложными для исследования аналитическими методами, либо слишком дорогостоящими или опасными для экспериментального изучения[5]
  • быстрым ростом сложности объектов моделирования (усложнение и увеличение систем)[4]
  • возникновением необходимости решения задач, для которых необходимо проведение анализа сложного поведения (например, условий перехода, к так называемому, детерминированному хаосу)[4]
  • необходимостью управления сложными промышленными и технологическими процессами в режиме реального времени и в условиях

неопределенности[4][5][6]

  • ростом числа задач, для решения которых необходимо обрабатывать гигантские объемы информации (например, 3D моделирование)[4]

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

Создать программу для выполнения которой будут задействованы все ресурсы суперкомпьютера не всегда возможно. В самом деле, при разработке параллельной программы для распределенной системы мало разбить программу на параллельные потоки. Для эффективного использования ресурсов необходимо обеспечить равномерную загрузку каждого из узлов кластера, что в свою очередь означает, что все потоки программы должны выполнить примерно одинаковый объем вычислений.[5]

Рассмотрим частный случай, когда при решении некоторой параметрической задачи для разных значений параметров время поиска решения может значительно различаться. Тогда мы получим значительный перекос загрузки узлов кластера. В действительности практически любая вычислительная задача выполняется в кластере не равномерно.[5]

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

Получение высокой эффективности выполнения программ усложняет использование параллельных систем.[7] Согласно отчету Межведомственной комиссии по развитию сверхмощных вычислений США эффективность современных (2004 г.) параллельных систем в среднем составляет менее 10%.[8]

Доминирующее положение при разработке параллельных программ для параллельных систем занимает стандарт MPI (англ. Message Passing Interface). Программа, разработанная в модели передачи сообщений, может быть представлена информационным графом, вершинам которого соответствуют параллельные ветви программы, а ребрам коммуникационные связи между ними. Это можно использовать для диспетчеризации заданий и их вычислительных потоков. Учитывая гетерогенность вычислительных ресурсов и сред передачи данных в кластере, можно осуществить распределение вычислительных потоков (ветвей) по вычислительным узлам так, чтобы минимизировать накладные расходы на обмен данными между потоками и выровнять вычислительную нагрузку между узлами. Для этого необходимо обладать информацией о мощности и загруженности узлов и структуре параллельных программ, которые ожидают выполнения.[9]

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

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

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

Существует множество аналогичных специализированных пакетов для централизованной диспетчеризации параллельных программ в пространственно распределенных системах: Grid-Way, CSF, Nimrod/G, Condor-G, GrADS, AppLeS, DIRAC, WMS и др.[7] Но описание методов управления пространственно распределенными (GRID, мультикопьютинг) системами выходит за рамки этой книги.

Безопасность

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

С точки зрения эффективности использования, имеется несколько вариантов решения задачи мониторинга, управления узлами и компонентами суперкомпьютера, создания и управления очередями заданий. Что касается вопросов безопасности суперкомпьютеров, их решение либо не происходит вообще (нет обеспечения безопасности/конфиденциальности), либо всё сводится к разграничению доступа к файлам и данным на уровне пользователей операционной системы, назначению прав доступа к хранилищам и иным компонентам суперкомпьютера, а передача всех данных по открытым каналам происходит с шифрованием данных (используя технологию SSL). Такой под ход, в частности, в среде Linux не избавляет от следующих ситуаций (если не вносить модификацию в исходные тексты ядра и утилит ОС):[7]

  1. практически любой пользователь может узнать кто, когда и какое время использует узлы суперкомпьютера;
  2. практически любой пользователь может узнать, кто в данный момент находится на управляющем узле суперкомпьютера и какие процессы запускает, какие программы использует (при наличии нескольких управляющих узлов – только на том, на который пользователь вошёл);
  3. при определённых навыках, пользователь может узнать что, кем и где запущено на вычислительных узлах суперкомпьютера (только в том случае, если разграничение доступа на узлы суперкомпьютера сделано стандартным для ОС Linux способом);
  4. при использовании стандартных коммерческих вычислительных пакетов на суперкомпьютере, практически любой пользователь может получить доступ к временным данным других пользователей (только в случае, если сам пользователь не позаботится о сохранности своих данных).

Помимо названных, существует ещё несколько ситуаций, в которых возможна утечка конфиденциальной информации при работе на «стандартном» суперкомпьютере под управлением ОС Linux.[7]

Примечания

  1. Эндрю Таненбаум, Мартин ван Стеен Распределенные системы. Принципы и парадигмы = Andrew S. Tanenbaum, Maarten van Steen. "Destributed systems. Principles and paradigms. — Санкт-Петербург: Питер, 2003. — 877 с. — (Классика computer science). — ISBN 5-272-00053-6
  2. Словарь по кибернетике / Под редакцией академика В. С. Михалевича. — 2-е. — Киев: Главная редакция Украинской Советской Энциклопедии имени М. П. Бажана, 1989. — 751 с. — (С48). — 50000 экз. — ISBN 5-88500-008-5
  3. http://parallel.ru/meta/
  4. ↑ Перейти к: абвгд С. Н. Андрианов, А. Б. Дегтярев 1 // ПАРАЛЛЕЛЬНЫЕ И РАСПРЕДЕЛЕННЫЕ ВЫЧИСЛЕНИЯ. — С.-Петерб.: Издательство С.-Петербургского университета, 2007. — 61 с.
  5. ↑ Перейти к: абвгдеё А. А. Букатов, В. Н. Дацюк, А. И. Жегуло Программирование многопроцессорных вычислительных систем. — Ростов-на-Дону: ООО «ЦВВР», 2003. — 208 с. — ISBN 5-94153-062-5
  6. Гэри М., Джонсон Д. Вычислительные машины и труднорешаемые задачи. – М.: Мир, 1982. – 416 с.
  7. ↑ Перейти к: абвгде Материалы Девятой международной конференции-семинара ВЫСОКОПРОИЗВОДИТЕЛЬНЫЕ ПАРАЛЛЕЛЬНЫЕ ВЫЧИСЛЕНИЯ НА КЛАСТЕРНЫХ СИСТЕМАХ / С.М. Аракелян (ответственный редактор). — Владимир: Издательство Владимирского государственного университета, 2009. — 437 с. — 150 экз. экз. — ISBN 978-5-89368-958-7
  8. Federal Plan for High-End Computing: Report of the High-End Computing Revitalization Task Force (HECRTF), 2004, http://www.nitrd.gov/pubs/2004_hecrtf/20040702_hecrtf.pdf
  9. ВЫСОКОПРОИЗВОДИТЕЛЬНЫЕ ПАРАЛЛЕЛЬНЫЕ ВЫЧИСЛЕНИЯ НА КЛАСТЕРНЫХ СИСТЕМАХ — Материалы Седьмой Международной конференции-семинара, Нижний Новгород, 26–30 ноября 2007 г.

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

  • Кластерw — группа компьютеров, объединённых высокоскоростными каналами связи и представляющая с точки зрения пользователя единый аппаратный ресурс.
    • Статический кластер
    • Динамический кластер
  • Метакомпьютинг

Сравнение статических и динамических кластеров[править]

Параллельный кластер Распределенная открытая сеть (Grid)
Высокая полная стоимость владения. Один сервер, низкая стоимость владения.
Постоянное количество вычислительных единиц. Динамическая, не имеет постоянной конфигурации. Отдельные вычислительные единицы могут включаться в его конфигурацию или отключаться от нее в процессе вычислений.
Широкий спектр решаемых задач. Оптимальные задачи переборного и поискового типа, где вычислительные узлы практически не взамодействуют друг с другом и основную часть работы производят в автономном режиме.[1]

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

  1. установка и обновление программного обеспечения
  2. мониторинг состояния вычислительных узлов и вычислительных процессов
  3. предоставления пользователю удобного интерфейса для запуска задач и проверки их состояния
  4. динамическое распределение нагрузки на вычислительных узлах кластера[1]

Содержание

[убрать]

  • 1 Установка и обновление программного обеспечения
  • 2 Мониторинг
  • 3 Динамическое распределение нагрузки
  • 4 Примечания

Установка и обновление программного обеспечения[править]

Большинство кластерных систем работают под управлением операционных систем из семейства Linux. И хотя удаленный доступ, установка и обновление в данных ОС программно реализованы, эти задачи остаются трудоемкими. Частично эту проблему решают специализированные программные продукты, такие как:

  • IBM CSM (Cluster System Management)[1]
  • xCAT (Extreme Cloud Administration Tool)[1]

Мониторинг[править]

Для мониторинга состояния вычислительных узлов наиболее часто применяют связку из систем Ganglia и Nagios.[1] Основным недостатком этих систем является отсутствие механизмов наблюдения за параллельными процессами. А ведь для динамического распределения нагрузки очень важно не просто знать насколько загружен процессор на каждом из вычислительных узлов, но и иметь возможность определить долю полезной загрузки параллельными процессами, особенно если этих процессов несколько.

Динамическое распределение нагрузки[править]

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

Для динамического распределения нагрузки чаще всего используют менеджер ресурсов Torque в связке с локальным планировщиком задач Maui.[1]

Примечания[править]

  1. ↑ Перейти к: абвгд Материалы Девятой международной конференции-семинара ВЫСОКОПРОИЗВОДИТЕЛЬНЫЕ ПАРАЛЛЕЛЬНЫЕ ВЫЧИСЛЕНИЯ НА КЛАСТЕРНЫХ СИСТЕМАХ / С.М. Аракелян (ответственный редактор). — Владимир: Издательство Владимирского государственного университета, 2009. — 437 с. — 150 экз. экз. — ISBN 978-5-89368-958-7
  2. ↑ Перейти к: аб А. А. Букатов, В. Н. Дацюк, А. И. Жегуло Программирование многопроцессорных вычислительных систем. — Ростов-на-Дону: ООО «ЦВВР», 2003. — 208 с. — ISBN 5-94153-062-5

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

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

  1. Допускается ли выполнение нескольких задач на каждом из процессоров?
  2. На сколько задачи будут загружать процессоры, можно ли ограничивать нагрузку?
  3. Как свести к мнимому конкуренцию между параллельными и накладными задачами?
  4. Как отличить полезную нагрузку от паразитной (накладные задачи)?
  5. Как предотвратить "трагедию общин" как следствия монопольного, длительного захвата вычислительных ресурсов.
  6. Как определить мощность каждого из узлов в гетерогенных системах.
  7. Как приостановить выполнение вычислений в случае исчерпания лимита времени или в случае экстренного завершения всех процессов?

На сегодняшний день (2011) не существует универсального программного комплекса для мониторинга распределенных вычислительных систем. В связи с этим в кластерах используются или несколько программных продуктов одновременно, или программы мониторинга создаются с нуля.

Среди готовых решений можно выделить такие программы:

  • Ganglia — гибкая легко масштабируемая система
  • Nagios — стала популярной благодаря встроенной системы оповещения
  • w:en:GStat (англ.) — используется для GRID систем

также используются следующие утилиты и библиотеки:


Дата публикования: 2015-11-01; Прочитано: 202 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.01 с)...