Logo GenDocs.ru

Поиск по сайту:  


Загрузка...

Программное обеспечение суперкомпьютеров - файл 1.docx


Программное обеспечение суперкомпьютеров
скачать (151 kb.)

Доступные файлы (1):

1.docx152kb.20.12.2011 12:49скачать

содержание
Загрузка...

1.docx

Реклама MarketGid:
Загрузка...
Міністерство освіти і науки України

Національний технічний університет України

«Київський політехнічний інститут»

Реферат

З «Корпоративні інформаційні системи та технології» на тему:

«Програмне забезпечення суперкомп’ютера. Огляд.»

(6 семестр)

Виконав:

Студент IІI курсу ФІОТ

Групи ЗІК-81

xxx x.x.
Перевірив:
___________________________
___________________________

Київ – 2011




План.
Введение.

Суперкомпьютеры.

2.1 Архитектура.

2.2 Вычислительная мощность.

3. Программное обеспечение суперкомпьютера.

3.1 Операционная система.

3.2 Организация параллельных вычислений.

3.3 Программирование.

^ 3.4 Прикладное программное обеспечение.

4. Заключение.

5. Литература.



















































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

Суперкомпьютер (англ. supercomputer, СуперЭВМ) — вычислительная машина, значительно превосходящая по своим техническим параметрам большинство существующих компьютеров. Как правило, современные суперкомпьютеры представляют собой большое число высокопроизводительных серверных компьютеров, соединённых друг с другом локальной высокоскоростной магистралью для достижения максимальной производительности в рамках подхода распараллеливания вычислительной задачи.

Определение понятия суперкомпьютер не раз было предметом многочисленных споров и дискуссий. Чаще всего авторство термина приписывается Джорджу Мишелю и Сиднею Фернбачу, в конце 60-х годов XX века работавшим в Ливерморской национальной лаборатории и компании CDC (англ.). Тем не менее, известен тот факт, что ещё в 1920 году газета New York World (англ.) рассказывала о «супервычислениях», выполняемых при помощи табулятора IBM, собранного по заказу Колумбийского университета.

В общеупотребительный лексикон термин «суперкомпьютер» вошёл благодаря распространённости компьютерных систем Сеймура Крея, таких как, CDC 6600 (англ.), CDC 7600 (англ.), Cray-1, Cray-2 (англ.), Cray-3 (англ.) и Cray-4 (англ.). Сеймур Крей разрабатывал вычислительные машины, которые по сути становились основными вычислительными средствами правительственных, промышленных и академических научно-технических проектов США с середины 60-х годов до 1996 года. Не случайно в то время одним из популярных определений суперкомпьютера было следующее: — «любой компьютер, который создал Сеймур Крей». Сам Крей никогда не называл свои детища суперкомпьютерами, предпочитая использовать вместо этого обычное название «компьютер».

Компьютерные системы Крея удерживались на вершине рынка в течение 5 лет с 1985 по 1990 годы. 80-е годы XX века охарактеризовались появлением множества небольших конкурирующих компаний, занимающихся созданием высокопроизводительных компьютеров, однако к середине 90-х большинство из них оставили эту сферу деятельности, что даже заставило обозревателей заговорить о «крахе рынка суперкомпьютеров». На сегодняшний день суперкомпьютеры являются уникальными системами, создаваемыми «традиционными» игроками компьютерного рынка, такими как IBM, Hewlett-Packard, NEC и другими, которые приобрели множество ранних компаний, вместе с их опытом и технологиями. Компания Cray (англ.) по-прежнему занимает достойное место в ряду производителей суперкомпьютерной техники.

Из-за большой гибкости самого термина до сих пор распространены довольно нечёткие представления о понятии «суперкомпьютер». Шутливая классификация Гордона Белла и Дона Нельсона, разработанная приблизительно в 1989 году, предлагала считать суперкомпьютером любой компьютер, весящий более тонны. Современные суперкомпьютеры действительно весят более 1 тонны, однако далеко не каждый тяжёлый компьютер достоин чести считаться суперкомпьютером. В общем случае, су

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

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

Большинство суперкомпьютеров 70-х оснащались векторными процессорами, а к началу и середине 80-х небольшое число (от 4 до 16) параллельно работающих векторных процессоров практически стало стандартным суперкомпьютерным решением. Конец 80-х и начало 90-х годов охарактеризовались сменой магистрального направления развития суперкомпьютеров от векторно-конвейерной обработки к большому и сверхбольшому числу параллельно соединённых скалярных процессоров.

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

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

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

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

Суперкомпьютеры.
2.1 Архитектура.
MPP архитектура.

MPP архитектура (massive parallel processing) - массивно-параллельная архитектура. Главная особенность такой архитектуры состоит в том, что память физически разделена. В этом случае система строится из отдельных модулей, содержащих процессор, локальный банк операционной памяти, два коммуникационных процессора (рутера) или сетевой адаптер, иногда - жесткие диски и/или другие устройства ввода/вывода. Один рутер используется для передачи команд, другой - для передачи данных. По сути, такие модули представляют собой полнофункциональные компьютеры. Доступ к банку ОП из данного модуля имеет только процессоры из этого же модуля. Модули соединяются специальными коммуникационными каналами. Пользователь может определить логический номер процессора, к которому он подключен, и организовать обмен сообщениями с другими процессорами. Используются два варианта работы операционной системы на машинах MPP архитектуры. В одном, полноценная операционная система работает только на управляющей машине (front-end), на каждом отдельном модуле работает сильно урезанный вариант ОС, обеспечивающий работу только расположенной в нем ветви параллельного приложения. Во втором варианте, на каждом модуле работает полноценная UNIX-подобная ОС, устанавливаемая отдельно на каждом модуле.
SMP-архитектура.

SMP (symmetric multiprocessing) – симметричная многопроцессорная архитектура. Главной особенностью систем с архитектурой SMP является наличие общей физической памяти, разделяемой всеми процессорами.

Память служит, в частности, для передачи сообщений между процессорами, при этом все вычислительные устройства при обращении к ней имеют равные права и одну и ту же адресацию для всех ячеек памяти. Поэтому SMP-архитектура называется симметричной. Последнее обстоятельство позволяет очень эффективно обмениваться данными с другими вычислительными устройствами. SMP-система строится на основе высокоскоростной системной шины, к слотам которой подключаются функциональные блоки типов: процессоры, подсистема ввода/вывода и т. п. Для подсоединения к модулям I/O используются уже более медленные шины. Наиболее известными SMP-системами являются SMP-cерверы и рабочие станции на базе процессоров Intel (IBM, HP, Compaq, Dell, ALR, Unisys, DG, Fujitsu и др.) Вся система работает под управлением единой ОС (обычно UNIX-подобной, но для Intel-платформ поддерживается Windows NT). ОС автоматически (в процессе работы) распределяет процессы по процессорам, но иногда возможна и явная привязка.
^ Кластерные вычислительные системы.

С переходом на архитектуру MPP (Massive parallel processing) – массовую параллельную обработку, где использовалось большое число серийно выпускаемых процессоров, удалось заметно снизить затраты на создание суперкомпьютеров, поскольку не использовались уже разработанные технологии. Основная стоимость и сложность теперь заключалась в использовании специальных коммуникационных решений для связи этих процессоров. У каждой фирмы были свои разработки и порой создавались 

под конкретное решение. Несмотря на эффективность, высокая стоимость заставила задуматься об альтернативных решениях.

Такой альтернативой стал проект "Беовульф", созданный в 94-м году. Его суть заключалась в создании вычислительного комплекса (кластера) на основе обычных компьютеров, объединённых недорогой сетью, с распространённой и доступной операционной системой (обычно Linux). Преимущества очевидны – все компоненты легко можно купить и собрать, отсутствие специализированных решений и компонент значительно снизило затраты. Минусом является более низкая скорость обмена данными между узлами, ввиду использования обычной компьютерной сети.

Реализация проекта Беовульф привела к возникновению большого числа последователей, ибо она заложила основу для значительно более низких по стоимости высокопроизводительных вычислений. В 2000 году в top500 (15-й выпуск) количество кластерных решений составляло 2.2%. В 2004 в 23 выпуске – 57,8%, в 2010 – 92,2%. Динамика по годам представлена на графике –

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

Один из первых архитекторов кластерной технологии Грегори Пфистер (Gregory F. Pfister) дал кластеру следующее определение: «Кластер — это разновидность параллельной или распределённой системы, которая:

^ 1. состоит из нескольких связанных между собой компьютеров;

2. используется как единый, унифицированный компьютерный ресурс».




Обычно различают следующие основные виды кластеров:

1. отказоустойчивые кластеры (High-availability clusters, HA, кластеры высокой доступности)

2. кластеры с балансировкой нагрузки (Load balancing clusters)

3. вычислительные кластеры (Computing clusters)

4. grid-системы
В качестве вычислительных узлов в кластере обычно используются однопроцессорные персональные компьютеры, двух- или четырехпроцессорные SMP-серверы. Каждый узел работает под управлением своей копии операционной системы, в качестве которой чаще всего используются стандартные операционные системы: Linux, NT, Solaris и т.п. Состав и мощность узлов может меняться даже в рамках одного кластера, давая возможность создавать неоднородные системы. Выбор конкретной коммуникационной среды определяется многими факторами: особенностями класса решаемых задач, необходимостью последующего расширения кластера и т.п. Возможно включение в конфигурацию специализированных компьютеров, например, файл-сервера, и, как правило, предоставлена возможность удаленного доступа на кластер через Internet.
Вычислительная мощность компьютера.
Вычислительная мощность компьютера (производительность компьютера) — это количественная характеристика скорости выполнения определённых операций на компьютере. Чаще всего вычислительная мощность измеряется в флопсах (количество операций с плавающей точкой в секунду), а также производными от неё. На данный момент принято причислять к суперкомпьютерам системы с вычислительной мощностью более 10 Терафлопс.

^ Неоднозначность определения.

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

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

Наиболее популярным тестом производительности является Linpack benchmark. В частности, HPL (альтернативная реализация Linpack) используется для составлении Топ 500 листа суперкомпьютеров в мире.

Другими популярными программами для проведения тестирования являются NAMD (решение задач молекулярной динамики), HPCC (HPC Challenge benchmark), NAS Parallel Benchmarks.



Тест Linpack. в настоящее время является практически стандартом де-факто в тестировании вычислительных систем – по крайней мере, список 500 наиболее высокопроизводительных систем мира (www.top500.org) составляется именно по результатам этого теста.

Тест состоит в решении системы линейных арифметических уравнений методом LU-факторизации c выбором ведущего элемента столбца, где A – плотно заполненная матрица размерности N (первоначальный, «классический» вариант Linpack решал за-дачу размерности 100). Производительность в тесте Linpack измеряется в количестве производимых операций с плавающей запятой в секунду. Единицей измерения явля-ется 1 флопс, то есть одна такая операция в секунду. Поскольку количество операций, необходимое для решения задачи Linpack, известно с самого начала и зависит от ее размерности, измеряемая характеристика производительности получается как простое частное от деления этого известного числа операций на время, затраченное на реше-ние задачи.

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

Первоначально тест был написан на языке Fortran (и сейчас часто используется эта версия теста), однако для тестирования кластерных систем существует версия на языке C. Основное время теста (свыше 75% времени выполнения) занимает внутренний цикл, выполняющий типичную для действий с матрицами операцию. Поскольку тест LINPACK достаточно хорошо векторизуется и распараллеливается на большинстве систем, имеет смысл компилировать его компиляторами поддерживающими векторизацию.

TOP500 — проект по составлению рейтинга и описаний 500 самых мощных общественно известных компьютерных систем мира. Проект был запущен в 1993 году и публикует обновлённый список суперкомпьютеров дважды в год (в июне и ноябре). Этот проект направлен на обеспечение надёжной основы для выявления и отслеживания тенденций в области высокопроизводительных вычислений.
^ Рейтинг по состоянию на ноябрь 2010:

Tianhe-1A - (Национальный суперкомпьютерный центр в Тяньцзине (Китай)) - 2566.00 Tflops

Jaguar – (Окриджская национальная лаборатория (США)) - 1759.00 Tflops

Nebulae – (Национальный суперкомпьютерный центр в Шэньчжэнь (Китай) - 1271.00 Tflops


3. Программное обеспечение суперкомпьютера.
3.1 Операционная система.
Операционная система. Обычно используется система Linux (91.8% от общего числа на конец 2010 г). Так-же продолжает использоваться Unix система - UNICOS— название нескольких вариантов операционной системы Unix, созданных компанией Cray для своих суперкомпьютеров. Unicos является следующей операционной системой компании после Cray Operating System (COS). Сравнительно не давно появившаяся Microsoft Windows Compute Cluster Server (CCS) 2003 является интегрированной платформой для проведения высокопроизводительных вычислений. С использованием этой платформы, производять вычисления на кластерах, имеющих от нескольких до сотен, и даже, тысяч узлов.

^ Динамика использования операционных систем в суперкомпьютерах по годам представлена на графике –


Linux.

Обычно используется система Linux в версиях, специально оптимизированных под распределенные параллельные вычисления. Была проведена доработку ядра Linux 2.0. В процессе построения кластеров выяснилось, что стандартные драйверы сетевых устройств в Linux весьма неэффективны. Поэтому были разработаны новые драйверы, в первую очередь для сетей Fast Ethernet и Gigabit Ethernet, и обеспечена возможность логического объединения нескольких параллельных сетевых соединений между персональными компьютерами (аналогично аппаратному связыванию каналов), что позволяет из дешевых локальных сетей, обладающих 

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

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

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

Блокировки требуют соблюдения правил доступа к памяти, на поддержку которых тратятся определенные вычислительные ресурсы, причем даже работая на однопроцессорных компьютерах, поэтому, чтобы не включать в ядро Linux лишний код используется условная компиляция по макроопределению CONFIG_SMP, устанавливаемому утилитой autoconf. Все фрагменты кода, помеченные этим макросом, относятся к многопроцессорной системе; таких мест в общем коде операционной системы, содержащемся в каталоге kernel, восемнадцать. В основном они сосредоточены в планировщике, системе управления потоками, обработке исключительных ситуаций и сигналов, в коде управления таймером. Ядро, собранное с этим макросом, обычно поставляется в отдельном пакете, который устанавливается только в случае необходимости. В частности, если Linux устанавливался на компьютер с одним процессором, а потом в него был добавлен второй, то нужно переустановить ядро.
Unicos (официально все буквы заглавные — UNICOS) — название нескольких вариантов операционной системы Unix, созданных компанией Cray для своих суперкомпьютеров. Unicos является следующей операционной системой компании после Cray Operating System (COS). Она обеспечивала работу сетевых кластеров и совместимость на уровне исходного кода с некоторыми другими разновидностями Unix. Unicos впервые была представлена в 1985 году, в качестве операционной системы суперкомпьютера Cray-2, а позднее была портирована и на другие модели Cray. Изначально основу Unicos составляла System V.2 с многочисленными добавлениями возможностей BSD (например, расширенные сетевые функции и улучшения файловой системы).

Изначально система, известная сейчас как Unicos, носила название CX-OS. Это была экспериментальная система, работавшая на Cray X-MP в 1984 году до портирования на Cray-2. Она использовалась для демонстрации применимости Unix на суперкомпьютерах, прежде всего на доступном аппаратном обеспечении компании Cray.

Обновление операционной системы было частью более большого движения внутри Cray Research по модернизации программного обеспечения предлагаемого компанией, включая переписывание её наиболее важного продукта, компилятора Фортрана, на языке более высокого уровня (Паскаль) с более современными оптимизацией и векторизацией.



В качестве переходного этапа для пользователей COS, пожелавших перейти на Unicos, в COS была введена функция совместимости с гостевой операционной системой (Guest OS). При этом единственной, когда-либо поддерживавшейся гостевой операционной системой, была Unicos. Пакетное задание COS запускало Unicos, которая работала как подсистема внутри COS, используя подмножество системных ЦПУ, памяти и периферийных устройств. Unicos, работавшая под COS, была в точности такой же, как если бы она была автономной системой. Отличия были только в том, что ядро системы осуществляло определённые низкоуровневые запросы к аппаратному обеспечению через перехватчик гостевой ОС в COS, а не напрямую к аппаратуре.

Одним из мест, работавших с самыми ранними версиями Unicos, была Bell Labs, где пионеры Unix, включая Денниса Ритчи, портировали под Unicos части их Восьмой редакции Unix, включая потоковый ввод-вывод. Они также экспериментировали с гостевыми возможностями Unicos, позволяя автономной версии системы быть основной для самой себя.
Windows Compute Cluster Server 2003.

В 2006 году корпорация Майкрософт выпустила системы Windows Server 2003 Compute Cluster Edition (CCE) и Windows Compute Cluster Server 2003 (WCCS), призванные обеспечить выполнение требований широкого ряда HPC-приложений. WCCS отличается от CCE только наличием пакета Microsoft® Compute Cluster Pack (CCP).

Важно отметить, что системы CCE и WCCS выпущены только в виде 64-разрядных версий — 32-разрядных версий (x86) этих продуктов нет. Требования к оборудованию для CCE и WCCS совпадают с требованиями для 64-разрядной версии Windows Server 2003 Standard. Для обеспечения работы высокопроизводительного оборудования (64-разрядной архитектуры) эти системы дополнительно включают поддержку RDMA для высокоскоростных подключений (Gigabit Ethernet, InfiniBand, Myrinet и др.)

^ Пакет Compute Cluster Pack.

Как было упомянуто ранее, вычислительные кластеры предъявляют ряд базовых требования, которые выполняются путем установки пакета Compute Cluster Pack. CCP — это самостоятельный установочный пакет, включающий в себя следующие компоненты:

* встроенный планировщик заданий;

* поддержку интерфейса MPI для отраслевого стандарта MPICH2;

* инструменты пользователя и средства управления ресурсами кластера.

Наличие пакета CCP — главное отличие систем CCE и WCCS. Возникает вопрос: почему пакет включен только в WCCS, если он содержит средства, необходимые для работы кластера. Дело в том, что в некоторых HPC-решениях используются другие планировщики заданий или специальные MPI-интерфейсы (а в некоторых случаях поддержка MPI вовсе не требуется). Для реализации таких решений необходима лишь опорная платформа — а именно Windows Server 2003. А поскольку CCP представляет собой совершенно самостоятельный пакет, его можно установить на любой 64-разрядной версии Windows Server 2003 (CCE, Standard, Standard R2, Enterprise и Enterprise R2).

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

Наиболее распространёнными программными средствами суперкомпьютеров, также как и параллельных или распределённых компьютерных систем являются интерфейсы программирования приложений (API) на основе MPI и PVM, и решения на базе программного обеспечения, позволяющего создавать суперкомпьютеры даже на базе обыкновенных рабочих станций и персональных компьютеров. Среди пользователей GNU/Linux популярны несколько программ:

distcc, MPICH — специализированные средства для распараллеливания работы программ.

Linux Virtual Server, Linux-HA — узловое ПО для распределения запросов между вычислительными серверами.

MOSIX, openMosix, Kerrighed, OpenSSI — полнофункциональные кластерные среды, встроенные в ядро, автоматически распределяющие задачи между однородными узлами. OpenSSI, openMosix и Kerrighed создают среду единой операционной системы между узлами.
MPI и PVM.

^ MPI (Message Passing Interface - интерфейс передачи сообщений).

PVM (Parallel Virtual Machine - параллельная виртуальная машина);

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

И PVM, и MPI предоставляют возможность логической связи машин в единую вычислительную систему. И PVM, и MPI содержит больше количество библиотек разработки параллельных программ для языков Fortran, C, Python, Java а так же для многих других. Обе системы реализуют модель передачи сообщений.

Если приложение разрабатываться для многопроцессорного вычислительного комплекса, будет запускаться только на одной архитектуре и не требует значительной переносимости, использование MPI может принести значительный выигрыш в быстродействии. Система содержит значительно более богатые средства коммуникации, потому ее использование более предпочтительно в вычислительных системах, где используются специальные режимы коммуникации, недоступные в PVM. Но с целью обеспечения высокой скорости взаимодействия на MPI были наложены ограничения. Наиболее значимыми из них является отсутствие совместимости — различные реализации MPI не могут взаимодействовать между собой, и отсутствие возможности писать отказоустойчивые приложения с помощью MPI.

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

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

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

Подобный способ организации параллельных вычислений получил наименование модели "одна программа множество процессов" (single program multiple processes or SPMP1)).

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

Итак, теперь можно пояснить, что означает понятие MPI. Во- первых, MPI – это стандарт, которому должны удовлетворять средства организации передачи сообщений. Во-вторых, MPI – это программные средства, которые обеспечивают возможность передачи сообщений и при этом соответствуют всем требованиям стандарта MPI. Так, по стандарту, эти программные средства должны быть организованы в виде библиотек программных функций (библиотеки MPI) и должны быть доступны для наиболее широко используемых алгоритмических языков C и Fortran. Подобную "двойственность" MPI следует учитывать при использовании терминологии. Как правило, аббревиатура MPI применяется при упоминании стандарта, а сочетание "библиотека MPI" указывает на ту или иную программную реализацию стандарта. Однако достаточно часто для краткости обозначение MPI используется и для библиотек MPI, и, тем самым, для правильной интерпретации термина следует учитывать контекст.

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

Рекомендуемая бесплатная реализация MPI - пакет MPICH, разработанный в Аргоннской Национальной Лаборатории. Для кластеров на базе коммутатора Myrinet разработана система HPVM, куда также входит реализация MPI.



MPICH (англ. «Message Passing Interface Chameleon») — это одна из самых первых разработанных библиотек MPI. На её базе было создано большое количество других библиотек как OpenSource, так и коммерческих. В настоящее время существует две ветви исходных кодов: MPICH1 и MPICH2. Разработка ветви MPICH1 заморожена. Ветвь MPICH2 активно разрабатывается в Арагонской лаборатории, с участием IBM, Cray, SiCortex, Microsoft, Intel, NetEffect, Qlogic, Myricom, Ohio state university, UBC.

^ В числе основных достоинств MPI обычно называют следующие его возможности:

· Возможность использования в языках Фортран, Си, Си++;

· Предоставление возможностей для совмещения обменов сообщениями и вычислений;

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

· Широкий набор коллективных операций (например, широковещательная рассылка информации, сбор информации с разных процессоров), допускающих гораздо более эффективную реализацию, чем использование соответствующей последовательности пересылок точка-точка;

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

· Удобные средства именования адресатов сообщений, упрощающие разработку стандартных программ или разделение программы на функциональные блоки;

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

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

Проект PVM был создан в 1989 году профессором университета Эмори г. Атланта Vaidy Sunderman и лабораторией Oak Ridge National Laboratory. Первый релиз был запущен в марте 1991. Комплекс PVM обеспечивает работу параллельных программ в гетерогенных вычислительных средах. PVM объединяет множество разнородных вычислительных узлов в один огромный ресурс. В системе возможно создание приложений как типа SPMD (одна параллельная программа - много потоков данных), так и типа MPMD (много параллельных программ - много потоков данных). Она совместима с приложениями, написанными на разных языках программирования (например, С.С++. Fortran) и корректно преобразует данные при передаче их между узлами различной архитектуры. PVM изначально является открытой и свободно распространяемой системой.

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

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

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

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

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

^ Главными принципами построения библиотеки PVM являются:

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

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

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

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



^ 5. Поддержка многопроцессорной обработки. Библиотека PVM поддерживает существующий механизм передачи сообщений и в многопроцес­сорных компьютерах.

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

Вычислительная модель PVM представляет программу-приложение, со­держащую множество подпроцессов. Каждый из подпроцеесов обеспечивает решение части общей задачи — функциональный параллелизм; когда задача может быть разделена на несколько подзадач, которые могут быть выполнены параллельно. Еще одним их распространенных методов является параллелизм данных, когда одна и та же часть выполняет операции над различны­ми данными. Система PVM поддерживает эти модели параллелизма и их комбинации.
Linux Virtual Server (LVS) — это широко распространённое средство управления кластерных систем для Linux систем. Этот свободный проект начал Wensong Zhang в мае 1998. Цель проекта — построение высоконадёжного и высокоскоростного сервера используя кластерную технологию, которая обеспечивает хорошую масштабирумость, надёжность и работоспособность.

В LVS-кластер Red Hat Enterprise Linux входит Linux-машина, называемая активным маршрутизатором, передающая запросы из Интернет группе серверов. Таким образом, LVS кластеры состоят из двух классов компьютеров — LVS маршрутизаторов (одного активного и одного резервного) и набора реальных серверов, на которых и работают важные службы.

^ Активный маршрутизатор в кластере играет две роли:

* Балансировка нагрузки между реальными серверами.

* Проверка работоспособности служб на каждом из реальных серверов.

Задача резервного маршрутизатора заключается в наблюдении за активным маршрутизатором и в случае сбоя, выполнении его ролей.

В модели передачи сообщений параллельная программа представляет собой множество процессов, каждый из которых имеет собственное локальное адресное пространство. Взаимодействие процессов - обмен данными и синхронизация - осуществляется посредством передачи сообщений. Обобщение и стандартизация различных библиотек передачи сообщений привели в 1993 году к разработке стандарта MPI (Message Passing Interface). Его широкое внедрение в последующие годы обеспечило коренной перелом в решении проблемы переносимости параллельных программ, разрабатываемых в рамках разных подходов, использующих модель передачи сообщений в качестве модели выполнения.
Red Hat Cluster Suite (RHCS)

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

применение графических и веб-средств администрирования, не уделяя достаточно внимания средствам командной строки и содержимому конфигурационного файла (XML), желательно применять не менее трех нод.
Linux-HA.

Комплекс ПО для создания кластеров созданный сообществом. Изначально более простой чем RHCS, но не менее функциональный. Расчитан на создание менее дорогих решений, позволяя при этом применять все те же аппаратные средства, что и RHCS. Имеет менее развитые, по сравнению с RHCS, графические средства администрирования, основной упор сделан на командную строку. Из преимуществ: замечательная документация и хорошо комментированные конфигурационные файлы, позволяющие построить кластер фактически без обращения к документации, более «демократичные» требования к аппаратным решениям, предусмотрено построение кластера только из двух нод. Из недостатков: серьезные проблемы с ранней версией менеджера ресурсов, приводившие к отказу всех кластерных сервисов.
MOSIX это система управления кластерами и сетями ОС на ядре Linux, представляющая их как одну систему (Single-System Image, SSI), то есть эквивалент операционной системы для кластера в целом. В кластере MOSIX нет необходимости в модификации существующих приложений, в связывании с дополнительными библиотеками, в явном входе на удаленные узлы — все это осуществляется автоматически, прозрачно для приложений подобно SMP.

MOSIX разрабатывается с 1977 года в Еврейском университете (Иерусалим) исследовательской группой под руководством профессора Амнона Барака. До настоящего времени выпущены 10 версий. Первая версия, именуемая MOS (Multicomputer OS), выпущенная в 1983 году базировалась на UNIX 7 производства Bell Labs и была предназначена для кластера компьютеров PDP-11. Несколько последующих версий были основаны на UNIX System V и работали на кластерах компьютеров VAX и NS32532. В 1993 году была выпущена версия, основанная на BSD для кластера компьютеров 486/Pentium. Начиная с 1999 года MOSIX базируется на Linux для платформы х86.

Последняя версия MOSIX, именуемая MOSIX2, совместима с Linux версии 2.6. MOSIX2 реализована на уровне виртуализации операционной системы (OS Virtualization layer), который представляется пользователям и приложениям как единая система (SSI) под управлением Linux. Это позволяет приложениям работать на удаленных узлах в точности так же как они бы работали локально. Пользователи запускают свои обычные приложения (как последовательные так и параллельные) и MOSIX прозрачно для них ищет свободные ресурсы в кластере и распределяет процессы среди доступных узлов, увеличивая тем самым общую производительность.

MOSIX2 может управлять как кластером, так и многокластерной сетью (Grid), а также отдельными рабочими станциями и другими разделяемыми ресурсами. Гибкая система управления позволяет владельцам кластеров объединять свои вычислительные мощности, сохраняя при этом возможность автономного управления своими кластерами и возможность отключения в любое время без повреждения уже запущенных на кластере процессов. MOSIX2 может работать на реальном компьютере или на виртуальной машине. В первом случае производительность будет выше, но это требует модификации ядра Linux, тогда как во втором случае виртуальная машина может быть запущена поверх любой операционной системы, поддерживающей виртуализацию, без каких-либо модификаций. В частности это может быть любой дистрибутив GNU/Linux или версия Windows NT. MOSIX2 является наиболее подходящим выбо

ром для запуска приложений, требующих интенсивных вычислений и незначительного или среднего объема операций ввода-вывода. Тестирование MOSIX2 показывает, что производительность нескольких таких приложений, запущенных на многокластерной сети, построенной поверх сети Ethernet 1Gb/s практически идентична производительности, полученной на локальном кластере.
openMosix — это проект, являющийся продолжением проекта MOSIX, но под свободной лицензией GNU GPL. На данный момент OpenMosix работает с ядрами версий 2.4 и 2.6 архитектуры x86. OpenMosix портирован на Intel Itanium™ IA-64. Ведутся работы по портированию на 64-разрядную архитектуру AMD64 Opteron™.

OpenMosix поставляется с набором утилит для администрирования кластера. Для этого имеется также удобное GUI-приложение openMosixview.

Дополнительные приложения разработанные сообществом openMosix можно найти в интернет. Все они распространяются по лицензии GNU GPL. OpenMosix был официально закрыт 1 марта 2008 года, исходный код заморожен на Sourceforge.
3.3 Программирование.
Массивно параллельные компьютеры оказались весьма капризными по отношению к тем, кто для них пишет программы. Теперь уже не годится просто записывать алгоритм решения задачи на обычном языке программирования (такие программы и языки стали называть последовательными, чтобы отличить от параллельных). Программисту требуется после составления алгоритма подобно опытному начальнику разделить обязанности между подчиненными: решить, что будет выполняться на том или ином процессоре в системе и как они будут между собой сообщаться.

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

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

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

Для многопроцессорных ЭВМ с распределенной памятью и сетей ЭВМ такие программы в настоящее время, как правило, создаются на языках Фортран и Си, расширенных библиотеками передачи сообщений. Но программирование с использованием таких языков сопряжено с множеством сложностей. Поэтому возникает необходимость использовать другую модель. Такими языками и являются языки C-DVM и Fortran-DVM (в дальнейшем F-DVM), предназначенные для разработки мобильных и эффективных параллельных программ для ЭВМ различной архитектуры. Эти языки предоставляют возможность написать программу, которая может одновременно рассматриваться и как последовательная, и как параллельная. Параллельная программа представляет собой обычную последовательную программу, в которую вставлены DVM-указания, определяющие ее параллельное выполнение. DVM-указания прозрачны для стандартных компиляторов, поэтому DVM-программа обрабатывается ими как обычная последовательная программа.
Fortran90.

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

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

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

Фортран-DVM и Си-DVM.

Язык Fortran DVM (FDVM) является расширением языка Фортран 95 для параллельного программирования в модели DVM. Расширение оформлено в виде специальных комментариев (директив), которые аннотируют последовательную программу на языке Фортран 95.

Язык C-DVM это расширение ANSI-C специальными аннотациями для спецификации параллельного выполнения программы. Эти аннотации называются DVM-директивами. Компилятор C-DVM (конвертор C-DVM) - это инструмент DVM-системы, который преобразует аннотированную CDVM программу в ANSI-C программу в SPMD стиле, которая содержит обращения к системе поддержки (Lib-DVM). Затем полученная программа может быть оттранслирована любым C-компилятором и слинкована с библиотекой Lib-DVM.

Программа на языках Фортран-DVM и Си-DVM, помимо описания алгоритма обычными средствами языков Фортран 77 или Си, содержит правила параллельного выполнения этого алгоритма.

^ Программисту предоставляются следующие возможности спецификации параллельного выполнения программы:

· распределение элементов массива между процессорами;

· распределение витков цикла между процессорами;

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

· организация эффективного доступа к удаленным (расположенным на других процессорах) данным;

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

^ Модель выполнения программы можно упрощенно описать следующим образом.

Параллельная программа на исходном языке Фортран-DVM (или Си-DVM) превращается в программу на языке Фортран 77 (или Си), содержащую вызовы функций 

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

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

Многопроцессорной системой (или системой процессоров) называется та машина, которая предоставляется программе пользователя аппаратурой и базовым системным программным обеспечением. Для распределённой ЭВМ примером такой машины может служить MPI-машина. В этом случае, многопроцессорная система - это группа MPI-процессов, которые создаются при запуске параллельной программы на выполнение. Число процессоров многопроцессорной системы и её представление в виде многомерной решетки задаётся в командной строке при запуске программы.

^ Все объявленные в программе переменные (за исключением специально указанных "распределённых" массивов) размножаются по всем процессорам.

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

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

Недостатком системы DVM является то, что предоставляются только параллельные расширения языков Фортран 77 и Си, а расширения языков Фортран 90/95 и Си++ отсутствуют. Правда, следует сказать, что Фортран-DVM базируется на расширенном языке Фортран 77, уже включающем в себя ряд возможностей Фортрана 90, и планируется дальнейшее такое расширение.
FortranD и HPF.

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

Первыми попытками создания средств описания параллелизма данных явились FortranD, разработанный в 1992г. в Техасском университете, и Fortran Vienna, созданный группой из Венского университета. С целью объединения усилий и унификации языковых средств в январе 1992г. образована группа HPF (High Performance Forum), которая разработала проект языка HPF (High Performance Fortran), являющегося параллельным расширением Fortran90.



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

^ Наиболее популярные параллельные прикладные программные пакеты:

1) инженерные:

- СFD, CAD, CAE, т. е. гидро- и газодинамика, прочностной анализ, проектирование и расчет конструкций: программные пакеты FLUENT компании Fluent, пакеты STAR-CD и STAR CCM+, созданные CD adapco Group, MAGMASOFT от MAGMA, Altair HyperWorks от Altair Engineering и др., в том числе российская разработка FlowVision компании «ТЕСИС».

- расчеты столкновения конструкций и FEA (конечно-элементный анализ): LS-DYNA от LSTC, программные пакеты от ABAQUS, ANSYS, MSC.Software;

2) поиск новых лекарств, генетика и др. — программные пакеты от TurboWorx;

^ 3) ПО для обработки геофизических данных для нефтедобывающей отрасли: программные средства компаний Paradigm, Schlumberger.
Сравнительные данные по использованию суперкомпьютеров
Области использования

В мире (Тор500), %

Промышленность: электронная; тяжелая (автомобильная, авиационная, металлургия и др.); добывающая (геологоразведка, нефте- и газодобыча)

44,3

Вычислительные центры, наука и образование: суперкомпьютерные центры, университеты и научные институты (физика, математика, химия, биология, генетика), поставщики суперкомпьютеров, системные интеграторы

21,2

Прогнозы погоды и климатические исследования

18,5

Стратегические исследования, программы Министерства обороны, космическая и ядерная программы

7,1

Финансы: банки, финансовые корпорации, страхование, финансовые прогнозы и консалтинг

3,5

Потребительский сектор, медицина и фармакология, транспорт, торговля, производство потребительских товаров, продуктов питания

3

Медиа: цифровые видеотехнологии, компьютерные игры и пр.

2,2


Oracle RAC.

Сегодня даже те задачи, для решения которых традиционно применялись многопроцессорные системы с общей памятью, такие, как управление крупными базами данных, успешно решаются на кластерах. Появление на рынке таких продуктов, как, например, Oracle RAC (Real Applications Cluster). Oracle Real Application Clusters (RAC) — программное обеспечение для кластеризации и повышения доступности для среды Oracle. RAC является дополнением к СУБД Oracle, разработанное Oracle Corporation в 2001 и представленное в Oracle9i. Oracle Corporation поставляет RAC в стандартной версии (Standard Edition) своей БД и в качестве платного дополнения к Enterprise Edition. Oracle RAC позволяет запускать СУБД Oracle на несколькиx компьютераx одновременно.

В обычной (некластеризованной) СУБД, одна инстанция имеет доступ к одной базе данных. База данных состоит из набора файлов данных, контролирующих файлов и redo logs, расположенных на диске. Инстанция состоит из ресурсов системы, то есть памяти и процессов, отведённых под исполнение Oracle.

^ В среде Oracle RAC, два и более компьютеров (каждый компьютер является инстанцией) имеют параллельный доступ к одной базе данных.
CAE (англ. Computer-aided engineering)

ANSYS — универсальная программная система конечно-элементного (МКЭ) анализа, существующая и развивающаяся на протяжении последних 30 лет, является довольно популярной у специалистов в области компьютерного инжиниринга (CAE, Computer-Aided Engineering) и КЭ решения линейных и нелинейных, стационарных и нестационарных пространственных задач механики деформируемого твёрдого тела и механики конструкций (включая нестационарные геометрически и физически нелинейные задачи контактного взаимодействия элементов конструкций), задач механики жидкости и газа, теплопередачи и теплообмена, электродинамики, акустики, а также механики связанных полей. Моделирование и анализ в некоторых областях промышленности позволяет избежать дорогостоящих и длительных циклов разработки типа «проектирование — изготовление — испытания». Система работает на основе геометрического ядра Parasolid.

Программная система ANSYS является довольно известной CAE-системой, которая используется на таких известных предприятиях, как ABB, BMW, Boeing, Caterpillar, Daimler-Chrysler, Exxon, FIAT, Ford, General Electric, Lockheed Martin, MeyerWerft, Mitsubishi, Siemens, Shell, Volkswagen-Audi и др.
CFD (Computational Fluid Dynamics)

Программный комплекс STAR-CD

STAR-CD — многоцелевой CFD программный комплекс, предназначенный для проведения расчетов в области механики жидкости и газа. STAR-CD не является единственным расчетным пакетом, охватывающим данную область, аналогичными возможностями обладают программные пакеты ANSYS-CFX и FLUENT.

^ Аббревиатура «STAR» означает Simulation of Turbulent flows in Arbitrary Regions (Моделирование турбулентных потоков в произвольных геометрических областях).

STAR-CD позволяет решать задачи в следующих областях:

* Стационарные и нестационарные течения

* Ламинарные течения

* Турбулентные течения



* Сжимаемые и несжимаемые (включая около- и сверхзвуковые)

* Теплоперенос (конвективный, радиационный, теплопроводность с учетом твердых тел)

* Массоперенос

* Химические реакции

* Горение газообразного, жидкого и твердого топлива

* Распределенное сопротивление (например, в пористых средах, теплообменниках)

* Многокомпонентные течения

* Многофазные потоки — модель Лагранжа (дисперсные газ-тв.тело, газ-жидкость, жидкость-тв.тело, жидкость-жидкость)

* Многофазные потоки — модель Эйлера

* Свободные поверхности

Входящий в комплекс пакет STAR-HPC (High Performance Computing) предназначен для осуществления решения подготовленных в препроцессоре задач на многопроцессорных вычислительных системах. Распределение задачи по аппаратным ресурсам происходит следующим образом: расчетная геометрическая область (сетка) равномерно разбивается на количество частей, равное заказанному количеству процессоров. После этого, для каждой части генерируется исполняемый код, который выполняется соответствующими процессорами и узлами. В случае, когда расчетный узел представляет собой SMP систему, ему приходится одновременно выполнять столько процессов, сколько на нем было заказано процессоров для решения.

LS-DYNA — многоцелевой конечно-элементный комплекс разработки Livermore Software Technology Corp. (LSTC) — предназначена для анализа высоконелинейных и быстротекущих процессов в задачах механики твердого и жидкого тела. Разработка данного программного продукта была начата в начале 70х годов. Первая коммерческая версия программы выпущена в 1976 г. Программа была первой в своей области и послужила основой для всех современных пакетов высоконелинейного анализа, оставаясь на лидирующих позициях до сегодняшнего дня. Предназначение LS-DYNA: нелинейная динамика, теплоперенос, теплообмен, термомеханика, разрушение и развитие трещин, контакт, квазистатика, Эйлерово и произвольное Лагранж-Эйлерово поведение (Arbitrary Lagrangian-Eulerian, ALE), акустика, многодисциплинарный связанный анализ (взаимодействие потоков жидкостей и газов с деформируемой конструкцией, например, колебания жидкости в баках, связанные термомеханические задачи и др.). LS-DYNA содержит более 130 уравнений состояния материалов и 25 контактных алгоритмов. Помимо основной явной центрально-разностной схемы в программу включены также неявные методы — разреженных матриц, предопределенных сопряженных градиентов, Ланцоша. Для тепловых задач допускается 4 схемы — явная Эйлера (прямой ход); Кренка-Николсона; Галеркина; чисто неявная схема (обратный ход). Более подробно, (на русском языке) о программе LS-DYNA вы можете узнать по этой ссылке.

В числе приложений: моделирование взрывов, краш-тестов, сейсмика, обработка металлов давлением и др. Исследование поведения материалов (прокат листовой и объемный, ковка, глубокая листовая штамповка-вытяжка, экструдирование, и пр.).

Программный код полностью распараллелен и векторизован (первые версии LS-DYNA работали на компьютерах CDC-7600 и CRAY-1). Поддерживается декомпозиция заданий на сетевых кластерах (в т.ч. из персональных компьютеров).




NAMD (NAnoscale Molecular Dynamics) — бесплатная программа для молекулярной динамики, написанная с использованием модели параллельного программирования Charm++, обладающей высокой эффективностью распараллеливания и часто используемой для симуляции больших систем (миллионы атомов). Программа была создана совместно Группой Теоретической и Вычислительной Биофизики (TCB) и Лабораторией параллельного программирования (PPL) из Иллинойсского университета в Урбане и Шампейне.

Программа была анонсирована в 1995 г Нэльсоном и др. как параллельная программа для молекулярной динамики, включающая интерактивное моделирование, связанное с программой визуализации VMD.
distcc (от англ. distributed C/C++/ObjC compiler) — инструмент, позволяющий компилировать исходные коды при помощи компиляторов C/C++/ObjC на удалённых машинах, что позволяет ускорить процесс компиляции.

^ Состоит из двух основных частей — серверной (distccd) и клиентской (distcc).

distcc отсылает полный обработанный препроцессором исходный код и аргументы компилятора по сети, поэтому нет необходимости открывать доступ к файловой системе, иметь те же заголовочные файлы или установленные библиотеки, иметь синхронизированное время. Компиляция управляется клиентской машиной, которая обычно представляет собой компьютер разработчика или настольный компьютер. Клиент distcc запускаемый на компьютере выполняет подготовительные этапы перед компиляцией, а непосредственно компиляция осуществляется на удалённых серверах с запущенным distccd.
Shake 4.

Shake 4 является единственным компоновочным приложением с полным набором инструментов, подходящих как для отдельных художников, так и для студий, занимающихся созданием визуальных эффектов. Shake 4 предоставляет все необходимые инструменты для создания самых изощренных визуальных эффектов для кино- и телевизионных проектов. И является уже в течение 7 лет основным инструментом завоевывавших награды «Оскар» для создателей спецэффектов. Программа Shake широко используется при производстве современных фильмов. В частности, с ее помощью были созданы такие популярные ленты, как "Кинг Конг", "Миссия невыполнима 3", "Посейдон", "Пираты Карибского моря".


Заключение
Еще 10–15 лет назад суперкомпьютеры были чем-то вроде элитарного штучного инструмента, доступного в основном ученым из засекреченных ядерных центров и криптоаналитикам спецслужб. Однако развитие аппаратных и программных средств сверхвысокой производительности позволило освоить промышленный выпуск этих машин, а число их пользователей в настоящее время достигает десятков тысяч. Фактически, в наши дни весь мир переживает подлинный бум суперкомпьютерных проектов, результатами которых активно пользуются не только такие традиционные потребители высоких технологий, как аэрокосмическая, автомобильная, судостроительная и радиоэлектронная отрасли промышленности, но и важнейшие области современных научных знаний.

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

Ведущие производители микропроцессоров: Sun Microsystems, Dell и IBM придерживаются одинаковой точки зрения на будущее отрасли суперкомпьютеров: на смену отдельным, независимым суперкомпьютерам должны прийти группы высокопроизводительных серверов, объединяемых в кластер. Уже сегодня распределенные кластерные системы опережают современные классические суперкомпьютеры по производительности.

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

Литература.
Материалы с сайтов:

http://www.intuit.ru/ «Интернет-Университет Информационных Технологий».

http://www.osp.ru/ «Издательство "Открытые системы"».

2. http://www.ru.wikipedia.org/ «Википедия»







Скачать файл (151 kb.)

Поиск по сайту:  

© gendocs.ru
При копировании укажите ссылку.
обратиться к администрации
Рейтинг@Mail.ru