Вопрос 3. Кластерные суперкомпьютеры. Использование для моделирования наноматериалов ???
Компьютерное
моделирование является одним из эффективных методов изучения сложных систем.
Компьютерные модели проще и удобнее исследовать в силу их возможности проводить
т.н. вычислительные эксперименты, которые по сравнению с реальным экспериментом
затруднены из-за финансовых и физических препятствий или могут дать
непредсказуемый результат. Логичность и формализованность компьютерных моделей
позволяет выявить основные факторы, определяющие свойства изучаемого
объекта-оргинала (или целого класса объектов), в частности, исследовать отклик
моделируемой физической системы на изменения ее параметров и начальных условий.
Построение компьютерной модели базируется на абстрагировании от
конкретной природы явлений или изучаемого объекта-оригинала и состоит из двух
этапов - сначала создание качественной, а затем и количественной модели.
Компьютерное же моделирование заключается в проведении серии вычислительных
экспериментов на компьютере, целью которых является анализ, интерпретация и
сопоставление результатов моделирования с реальным поведением изучаемого
объекта и, при необходимости, последующее уточнение модели и т. д.
К основным этапам компьютерного моделирования относятся:
- постановка задачи, определение объекта моделирования;
разработка концептуальной модели, выявление основных элементов системы и
элементарных актов взаимодействия;
- формализация, то есть переход к математической модели; создание алгоритма и
написание программы;
- планирование и проведение компьютерных экспериментов;
- анализ и интерпретация результатов.
Различают аналитическое и имитационное моделирование. При
аналитическом моделировании изучаются математические (абстрактные) модели
реального объекта в виде алгебраических, дифференциальных и других уравнений, а
также предусматривающих осуществление однозначной вычислительной процедуры,
приводящей к их точному решению. При имитационном моделировании исследуются
математические модели в виде алгоритма(ов), воспроизводящего функционирование
исследуемой системы путем последовательного выполнения большого количества
элементарных операций.
Суперкомпьютер — вычислительная машина, значительно превосходящая по своим техническим параметрам большинство существующих компьютеров. Как правило, современные суперкомпьютеры представляют собой большое число высокопроизводительных серверных компьютеров, соединённых друг с другом локальной высокоскоростной магистралью для достижения максимальной производительности в рамках подхода распараллеливания вычислительной задачи.
Параллельные вычисления — способ организации компьютерных вычислений, при котором программы разрабатываются как набор взаимодействующих вычислительных процессов, работающих параллельно (одновременно). Термин охватывает совокупность вопросов параллелизма в программировании, а также создание эффективно действующих аппаратных реализаций. Теория параллельных вычислений составляет раздел прикладной теории алгоритмов.
Существуют различные способы реализации параллельных вычислений. Например, каждый вычислительный процесс может быть реализован в виде процесса операционной системы, либо же вычислительные процессы могут представлять собой набор потоков выполнения внутри одного процесса ОС. Параллельные программы могут физически исполняться либо последовательно на единственном процессоре — перемежая по очереди шаги выполнения каждого вычислительного процесса, либо параллельно — выделяя каждому вычислительному процессу один или несколько процессоров (находящихся рядом или распределённых в компьютерную сеть).
Основная сложность при проектировании параллельных программ — обеспечить правильную последовательность взаимодействий между различными вычислительными процессами, а также координацию ресурсов, разделяемых между процессами.
Кластер — группа компьютеров, объединённых высокоскоростными каналами связи и представляющая с точки зрения пользователя единый аппаратный ресурс.
Один из первых архитекторов кластерной технологии дал кластеру следующее определение: «Кластер — это разновидность параллельной или распределённой системы, которая:
- состоит из нескольких связанных между собой компьютеров;
- используется как единый, унифицированный компьютерный ресурс».
Обычно различают следующие основные виды кластеров:
- отказоустойчивые кластеры (кластеры
высокой доступности);
-
кластеры с балансировкой нагрузки;
- вычислительные кластеры;
- grid-системы;
1. Кластеры высокой доступности
Обозначаются аббревиатурой HA (англ. High Availability — высокая доступность). Создаются для обеспечения высокой доступности сервиса, предоставляемого кластером. Избыточное число узлов, входящих в кластер, гарантирует предоставление сервиса в случае отказа одного или нескольких серверов. Типичное число узлов — два, это минимальное количество, приводящее к повышению доступности. Создано множество программных решений для построения такого рода кластеров.
Отказоустойчивые кластеры и системы вообще строятся по трем основным принципам:
- с холодным резервом или активный/пассивный. Активный узел выполняет запросы, а пассивный ждет его отказа и включается в работу, когда таковой произойдет. Пример — резервные сетевые соединения, в частности, Алгоритм связующего дерева. Например связка DRBD и HeartBeat.
- с горячим резервом или активный/активный. Все узлы выполняют запросы, в случае отказа одного нагрузка перераспределяется между оставшимися. То есть кластер распределения нагрузки с поддержкой перераспределения запросов при отказе. Примеры — практически все кластерные технологии, например, Microsoft Cluster Server. OpenSource проект OpenMosix.
- с модульной избыточностью. Применяется только в случае, когда простой системы совершенно недопустим. Все узлы одновременно выполняют один и тот же запрос (либо части его, но так, что результат достижим и при отказе любого узла), из результатов берется любой. Необходимо гарантировать, что результаты разных узлов всегда будут одинаковы (либо различия гарантированно не повлияют на дальнейшую работу).
2. Кластеры распределения нагрузки
3. Вычислительные
кластеры
Кластеры
используются в вычислительных целях, в частности в научных исследованиях. Для
вычислительных кластеров существенными показателями являются высокая
производительность процессора в операциях над числами с плавающей точкой (flops) и низкая латентность объединяющей
сети, и менее существенными — скорость операций ввода-вывода, которая в
большей степени важна для баз данных и web-сервисов.
Вычислительные кластеры позволяют уменьшить время расчетов, по сравнению с
одиночным компьютером, разбивая задание на параллельно выполняющиеся ветки,
которые обмениваются данными по связывающей сети. Одна из типичных
конфигураций — набор компьютеров, собранных из общедоступных компонентов,
с установленной на них операционной системой Linux, и связанных сетью Ethernet, Myrinet, InfiniBand или
другими относительно недорогими сетями. Такую систему принято называть
кластером Beowulf.
Специально выделяют высокопроизводительные кластеры (Обозначаются англ.
аббревиатурой HPC Cluster — High-performance computing cluster).
4. Системы распределенных вычислений (grid)
Такие системы не принято считать
кластерами, но их принципы в значительной степени сходны с кластерной технологией.
Их также называют grid-системами.
Главное отличие — низкая доступность каждого узла, то есть невозможность
гарантировать его работу в заданный момент времени (узлы подключаются и
отключаются в процессе работы), поэтому задача должна быть разбита на ряд
независимых друг от друга процессов. Такая система, в отличие от кластеров, не
похожа на единый компьютер, а служит упрощённым средством распределения
вычислений. Нестабильность конфигурации, в таком случае, компенсируется большим
числом узлов.
Кластер серверов, организуемых программно.
Кластер серверов (в информационных технологиях) — группа
серверов, объединённых логически, способных обрабатывать идентичные запросы и
использующихся как единый ресурс. Чаще всего серверы группируются посредством
локальной сети. Группа серверов обладает большей надежностью и большей
производительностью, чем один сервер. Объединение серверов в один ресурс
происходит на уровне программных протоколов.
В отличие от аппаратного кластера компьютеров, кластеры организуемые программно,
требуют:
1. наличия специального программного модуля (Cluster Manager), основной
функцией которого является поддержание взаимодействия между всеми
серверами — членами кластера:
1.1. синхронизации данных между всеми серверами — членами кластера;
1.2.
распределение нагрузки (клиентских запросов) между серверами — членами
кластера;
2. от умения клиентского программного обеспечения распознавать сервер,
представляющий собой кластер серверов, и соответствующим образом обрабатывать
команды от Cluster Manager;
3. если клиентская программа не умеет распознавать кластер, она будет
работать только с тем сервером, к которому обратилась изначально, а при попытке
Cluster Manager перераспределить запрос на другие серверы, клиентская программа
может вообще лишиться доступа к этому серверу (результат зависит от конкретной
реализации кластера).
Применение.
В
большинстве случаев, кластеры серверов функционируют на раздельных компьютерах.
Это позволяет повышать производительность за счёт распределения нагрузки на
аппаратные ресурсы и обеспечивает отказоустойчивость на аппаратном уровне.
Однако, принцип организации кластера серверов (на уровне
программного протокола) позволяет исполнять по нескольку программных серверов
на одном аппаратном. Такое использование может быть востребовано:
- при разработке и тестировании кластерных решений;
- при необходимости обеспечить доступность кластера только с учётом
частых изменений конфигурации серверов — членов кластера, требующих их
перезагрузки (перезагрузка производится поочерёдно) в условиях ограниченных
аппаратных ресурсов.