Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Перед тем как начать изучение различных видов разветвления вычислительных процессов необходимо разобраться в базовых понятиях. Часто термин «распределенные вычисления» путают с термином «параллельные вычисления», иногда их ошибочно считают синонимами. Давайте разберемся чем отличаются эти два понятия.
Распределенные вычисления — способ решения трудоёмких вычислительных задач с использованием нескольких компьютеров, объединённых в параллельную вычислительную систему. Википедия | ||
Параллельные вычисления — такой способ организации компьютерных вычислений, при котором программы разрабатываются как набор взаимодействующих вычислительных процессов, работающих параллельно. Википедия |
Таким образом распределенные вычисления не могут производится на одной вычислительной машине, а параллельные вычисления могут производиться как на одной (многопоточность), так и на нескольких машинах. Возможность выполнения параллельных вычислений в распределенных системах и приводит к частому заблуждению, что это одно и тоже.
Распределенная система — это набор независимых компьютеров, представляющиеся их пользователям единой объединенной системой. Эндрю Таненбаум[1] |
Параллельные вычисления — вычисления, которые можно реализовать на многопроцессорных системах с использованием возможности одновременного выполнения многих действий, порождаемых процессом решения одной или многих задач. Словарь по кибернетике[2] |
Явление открытых (добровольных) вычислительных систем (англ. volunteer computing) следует выделить в отдельную тему и рассматривать как практическую реализацию систем распределенного вычисления. Такие вычислительные системы (сети) чаще всего строятся на базе, так называемых GRID систем (сетей), в русском языке иногда называются как системы метакомпьютинга (матавычисления).[3]
Задачи и цели
Вследствие повсеместного использования вычислительной техники бурно развивается направление численного моделирования (англ. numerical simulation [4]). Численное моделирование, является промежуточным элементом между аналитическими методами изучения и физическими экспериментами.[5] Рост количества задач, для решения которых необходимо использовать параллельные вычисления, обусловлен:
неопределенности[4][5][6]
При этом, использование численных моделей и кластерных систем, позволяет значительно уменьшить стоимость процесса научного и технологического поиска. Кластерные системы в последние годы широко используются во всем мире как дешевая альтернатива суперкомпьютерам. Система требуемой производительности собирается из готовых, серийно выпускаемых компьютеров, объединенных, опять же, с помощью серийно выпускаемого коммуникационного оборудования. Это, с одной стороны, увеличивает доступность суперкомпьютерных технологий, а с другой, повышает актуальность их освоения, поскольку для всех типов многопроцессорных систем требуется использование специальных технологий программирования для того, чтобы программы могли в полной мере использовать ресурсы высокопроизводительной вычислительной системы.[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]
Помимо названных, существует ещё несколько ситуаций, в которых возможна утечка конфиденциальной информации при работе на «стандартном» суперкомпьютере под управлением ОС Linux.[7]
Примечания
Перед тем как приступить к изучению параллельных и распределенных вычислительных систем необходимо четко представлять о чем идет речь, понимать смысл узкоспециализированных терминов.
Сравнение статических и динамических кластеров[править]
Параллельный кластер | Распределенная открытая сеть (Grid) |
Высокая полная стоимость владения. | Один сервер, низкая стоимость владения. |
Постоянное количество вычислительных единиц. | Динамическая, не имеет постоянной конфигурации. Отдельные вычислительные единицы могут включаться в его конфигурацию или отключаться от нее в процессе вычислений. |
Широкий спектр решаемых задач. | Оптимальные задачи переборного и поискового типа, где вычислительные узлы практически не взамодействуют друг с другом и основную часть работы производят в автономном режиме.[1] |
Для использования любой кластерной системы необходимо решить следующие проблемы:
Содержание
[убрать]
Установка и обновление программного обеспечения[править]
Большинство кластерных систем работают под управлением операционных систем из семейства Linux. И хотя удаленный доступ, установка и обновление в данных ОС программно реализованы, эти задачи остаются трудоемкими. Частично эту проблему решают специализированные программные продукты, такие как:
Мониторинг[править]
Для мониторинга состояния вычислительных узлов наиболее часто применяют связку из систем Ganglia и Nagios.[1] Основным недостатком этих систем является отсутствие механизмов наблюдения за параллельными процессами. А ведь для динамического распределения нагрузки очень важно не просто знать насколько загружен процессор на каждом из вычислительных узлов, но и иметь возможность определить долю полезной загрузки параллельными процессами, особенно если этих процессов несколько.
Динамическое распределение нагрузки[править]
Рассмотрим частный случай когда при решении некоторой параметрической задачи для разных значений параметров время поиска решения может значительно различаться.[2] Тогда мы получим значительный перекос загрузки узлов кластера. В действительности практически любая вычислительная задача выполняется в кластере не равномерно. Использование кластерных систем всегда более эффективно для обслуживания вычислительных потребностей большого количества пользователей, чем использование эквивалентного количества однопроцессорных рабочих станций, так как в этом случае с помощью системы управления заданиями легче обеспечить равномерную и более эффективную загрузку вычислительных ресурсов.[2]
Для динамического распределения нагрузки чаще всего используют менеджер ресурсов Torque в связке с локальным планировщиком задач Maui.[1]
Примечания[править]
Если принять во внимание, что узлы кластеров (Beowulf в частности) никогда не бывают абсолютно гомогенными, то становится очевидно, что время выполнения вычислительных задач на разных узлах будет разное. Гетерогенность на программном уровне уровне обусловлена отличиями в наборе пакетов, в количестве запущенных служб и процессов, и наличием "накладных" задач. Накладными задачами будем считать совокупность активных системных или пользовательских задач, которые не связаны с обеспечением параллельных вычислений.
Для организации вычислений в кластере наиболее эффективным способом, необходимо четко описать свойства кластера как вычислительной системы. Для этого нужно ответить на ряд вопросов:
На сегодняшний день (2011) не существует универсального программного комплекса для мониторинга распределенных вычислительных систем. В связи с этим в кластерах используются или несколько программных продуктов одновременно, или программы мониторинга создаются с нуля.
Среди готовых решений можно выделить такие программы:
также используются следующие утилиты и библиотеки:
Дата публикования: 2015-11-01; Прочитано: 202 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!