Автор работы: Пользователь скрыл имя, 27 Декабря 2012 в 15:40, курсовая работа
С момента появления разума на нашей планете его носители старались облегчить свой труд. Исследуя возможность раскапывания корений палкой, люди, скорее всего, не задумывались, что через века это замечательное, новейшее устройство упрощения простых механических операций трансформируется в нечто, способное совершать неподвластные человеческому мозгу операции вычислительные – и упрощать тем самым уже другие исследования. Тем не менее, это произошло. Появление первых электронных вычислителей, а затем и компьютеров позволило людям сделать огромный рывок в научной деятельности, так как стали доступны такие операции и их объемы, на выполнение которых человеческому мозгу требуется время, несопоставимое с понятием «оперативный результат».
Введение 6
1. Суперкомпьютеры 7
1.1 Что такое суперкомпьютер? 7
1.2 Определение суперкомпьютера 10
1.3 Краткая история развития суперЭВМ 12
1.4 Современные направления развития. Архитектуры суперЭВМ 17
1.4.1 Векторно-конвейерные компьютеры 18
1.4.2 Параллельные компьютеры 20
1.4.2.1 Основные формы параллелизма 20
1.4.2.2 Топологии систем MPP 23
1.4.3 Кластерные системы 25
1.4.3.1 Основные виды кластеров 25
1.4.3.2 Преимущества кластерной организации ЭВМ 26
2 Программное обеспечение суперкомпьютеров 31
2.1 Назначение суперкомпьютеров. Области использования 31
2.2 Вычислительная мощность компьютера 33
2.2.1 Вариативность определения ВМ 33
2.2.2 Тесты производительности 34
2.3 Операционная система 35
2.3.1 Linux 35
2.3.2 UNICOS 36
2.3.3 Windows Compute Cluster Server 37
2.4 Организация параллельных вычислений 38
2.5 Прикладное программное обеспечение 39
2.5.1 Наиболее популярные прикладные программные пакеты 39
2.5.2 Программное обеспечение специализированных областей 41
2.5.2.1 Программная система ANSYS 41
2.5.2.2 Программный комплекс STAR-CD 42
2.5.2.3 Программный комплекс LS-DYNA 43
2.5.2.4 Система решения задач NAMD 43
2.5.2.5 Приложение Shake 44
3 Практическая часть 45
Заключение 47
Список литературы 49
2 Программное обеспечение суперкомпьютеров
2.1 Назначение суперкомпьютеров. Области использования
Суперкомпьютеры
разрабатываются в первую очередь
для того, чтобы с их помощью
решать сложные задачи, требующие
огромных объемов вычислений. При
этом подразумевается, что может
быть создана единая программа, для
выполнения которой будут задействованы
все ресурсы суперкомпьютера. Однако
не всегда такая единая программа
может быть создана или ее создание
целесообразно. В самом деле, при
разработке параллельной программы
для многопроцессорной системы
мало разбить программу на параллельные
ветви. Для эффективного использования
ресурсов необходимо обеспечить равномерную
загрузку всех процессоров, что в
свою очередь означает, что все
ветви программы должны выполнить
примерно одинаковый объем вычислительной
работы. Однако не всегда этого можно
достичь. Например, при решении некоторой
параметрической задачи для разных
значений параметров время поиска решения
может значительно различаться.
В таких случаях, видимо, разумнее
независимо выполнять расчеты для
каждого параметра с помощью
обычной однопроцессорной программы.
Но даже в таком простом случае
могут потребоваться
В настоящее время, как уже говорилось выше, суперкомпьютерами принято называть компьютеры с вычислительной мощностью, намного превосходящей среднюю мощность недорогих общедоступных компьютеров. Эти машины используются для работы с приложениями, требующими наиболее интенсивных вычислений, в большинстве случаев - для ответа на «большие вызовы» (Grand challenges).
«Grand challenges» - это фундаментальные научные или инженерные задачи с широкой областью применения, эффективное решение которых возможно только с использованием мощных (суперкомпьютерных) вычислительных ресурсов. Основные области, где возникают задачи подобного рода (они же области применения суперкомпьютеров), это:
Исключительность значения каждой из сфер в том числе отличает их от серверов и мэйнфреймов (англ. mainframe) — компьютеров с высокой общей производительностью, призванных решать типовые задачи (например, обслуживание больших баз данных или одновременная работа с множеством пользователей).
2.2 Вычислительная мощность компьютера (ВМ)
2.2.1 Вариативность определения
В свете предстоящего разбора характеристик программного обеспечения необходимо подробнее ознакомиться с тем, как именно определяется производительность компьютера.
Вычислительная
мощность компьютера (производительность
компьютера) — это количественная
характеристика скорости выполнения определённых
операций на компьютере. Чаще всего
вычислительная мощность измеряется в
флопсах (количество операций с плавающей
точкой в секунду), а также производными
от неё. Планка мощности компьютеров, для
которых определена приставка «супер»,
в настоящее время постоянно изменяется
в сторону увеличения.
Существует несколько сложностей при
определении вычислительной мощности
суперкомпьютера. Во-первых, следует иметь
в виду, что производительность системы
может сильно зависеть от типа выполняемой
задачи. В частности, отрицательно сказывается
на вычислительной мощности необходимость
частого обмена данных между составляющими
компьютерной системы, а также частое
обращение к памяти. В связи с этим выделяют
пиковую вычислительную мощность — гипотетически
максимально возможное количество операций
над числами с плавающей запятой в секунду,
которое способен произвести данный суперкомпьютер.
Важную роль играет также разрядность
значений, обрабатываемых программой
(обычно имеется в виду формат чисел с
плавающей запятой).
Оценка реальной вычислительной мощности
производится путём прохождения специальных
тестов (бенчмарков, benchmarks) — набора программ,
специально предназначенных для проведения
вычислений и измерения времени их выполнения.
Обычно оценивается скорость решения
системой большой системы линейных алгебраических
уравнений, что обусловливается, в первую
очередь, хорошей масштабируемостью этой
задачи количеством уравнений.
2.2.2 Тесты производительности
Наиболее популярным тестом производительности
является Linpack benchmark. В частности, HPL (альтернативная
реализация Linpack) используется для составлении
Топ-500 листа суперкомпьютеров в мире (top500.org).
Тест состоит в решении системы линейных
арифметических уравнений методом LU-факторизации
c выбором ведущего элемента столбца, где
A – плотно заполненная матрица размерности
N (первоначальный, «классический» вариант
Linpack решал задачу размерности 100). Производительность
в тесте Linpack измеряется в количестве производимых
операций с плавающей запятой в секунду.
Единицей измерения является 1 флопс, то
есть одна такая операция в секунду. Поскольку
количество операций, необходимое для
решения задачи Linpack, известно с самого
начала и зависит от ее размерности, измеряемая
характеристика производительности получается
как простое частное от деления этого
известного числа операций на время, затраченное
на решение задачи.
С течением времени и увеличении вычислительной мощности компьютеров, размерность теста Linpack была увеличена до 1000. Однако с появлением все более мощных вычислительных систем и эта размерность стала чересчур малой, более того, для тестирования кластерных систем была создана отдельная версия теста в которой размерность матрицы (и некоторые другие параметры) не являются фиксированными, а задаются пользователем теста.
Первоначально тест был написан на языке Fortran (и сейчас часто используется эта версия теста), однако для тестирования кластерных систем существует версия на языке C. Основное время теста (свыше 75% времени выполнения) занимает внутренний цикл, выполняющий типичную для действий с матрицами операцию.
Другими популярными программами для проведения тестирования являются NAMD (решение задач молекулярной динамики), HPCC (HPC Challenge benchmark), NAS Parallel Benchmarks.
2.3 Операционная система (ОС)
2.3.1 Linux
Операционная система. Обычно используется система Linux (93.8% от общего числа на конец 2012 г). Также продолжает использоваться Unix-система UNICOS (название нескольких вариантов операционной системы Unix, созданных компанией Cray для своих суперкомпьютеров). В кластерных системах, как было замечено выше, используются смешанные (mixed) программные решения. На долю Windows и BSD-решений остаются скромные 0, 8%. Процентное соотношение используемых ОС представлено на диаграмме на рисунке 12.
Рисунок 12 - Процентное соотношение используемых ОС
В ОС Linux
имеется поддержка симметричных многопроцессорных
архитектур, причем ее реализация не потребовала
специальных серьезных изменений в ядре;
в рамках постепенной эволюции ядра к
нему был добавлен минимальный набор необходимых
примитивов.
Обычно используется система Linux в версиях,
специально оптимизированных под распределенные
параллельные вычисления. Оптимизация
во многом заключалась в переработке ядра
системы под новые задачи. В процессе построения
кластеров выяснилось, что стандартные
драйверы сетевых устройств в Linux весьма
неэффективны. Поэтому были разработаны
новые драйверы, в первую очередь для сетей
Fast Ethernet и Gigabit Ethernet, и обеспечена возможность
логического объединения нескольких параллельных
сетевых соединений между персональными
компьютерами (аналогично аппаратному
связыванию каналов), что позволяет из
дешевых локальных сетей, обладающих низкой
пропускной способностью, соорудить сеть
с высокой совокупной пропускной способностью.
Как и в любом кластере, на каждом узле
кластера исполняется своя копия ядра
ОС. Благодаря доработкам обеспечена уникальность
идентификаторов процессов в рамках всего
кластера, а не отдельных узлов.
Абсолютно независимые процессы, не использующие совместных ресурсов, будут работать, по возможности используя каждый свой процессор со своей же порцией оперативной памяти, а их общая производительность при использовании двух процессоров вместо одного будет вдвое больше. Использование специальных средств координации необходимо только в том случае, когда два процесса пытаются одновременно получить доступ к одному ресурсу, как правило, лежащему в памяти. В этом случае операционная система должна организовать доступ к нему так, чтобы один процессор случайно не испортил результаты работы другого. Для этого в ОС Linux предусмотрена система контроля доступа к областям памяти и блокировок на чтение и запись.
2.3.2 UNICOS
Unicos обеспечивала работу сетевых кластеров
и совместимость на уровне исходного кода
с некоторыми другими разновидностями
Unix. Unicos впервые была представлена в 1985
году, в качестве операционной системы
суперкомпьютера Cray-2, а позднее была портирована
и на другие модели Cray. Изначально основу
Unicos составляла System V.2 с многочисленными
добавлениями возможностей BSD (например,
расширенные сетевые функции и улучшения
файловой системы).
Изначально система, известная сейчас
как Unicos, носила название CX-OS. Это была
экспериментальная система, работавшая
на Cray X-MP в 1984 году до портирования на Cray-2.
Она использовалась для демонстрации
применимости Unix на суперкомпьютерах,
прежде всего на доступном аппаратном
обеспечении компании Cray.
Обновление операционной системы было
частью более большого движения внутри
Cray Research по модернизации программного
обеспечения предлагаемого компанией,
включая переписывание её наиболее важного
продукта, компилятора Фортрана, на языке
более высокого уровня (Паскаль) с более
современными оптимизацией и векторизацией.
2.3.3 Windows Compute Cluster Server
В 2006 году корпорация Майкрософт выпустила
системы Windows Server 2003 Compute Cluster Edition (CCE) и
Windows Compute Cluster Server 2003 (WCCS), призванные обеспечить
выполнение требований широкого ряда
HPC-приложений. WCCS отличается от CCE только
наличием пакета Microsoft® Compute Cluster Pack (CCP).
Высокопроизводительные вычисления (High Performance Computing, HPC) — это раздел прикладной информатики, занимающийся в основном поиском путей решения задач, требующих большого количества вычислительных ресурсов.
Как было упомянуто ранее, вычислительные кластеры предъявляют ряд базовых требования, которые выполняются путем установки пакета Compute Cluster Pack. CCP — это самостоятельный установочный пакет, включающий в себя следующие компоненты:
2.4 Организация параллельных вычислений
В вычислительных системах с распределенной
памятью процессоры работают независимо
друг от друга. Для организации параллельных
вычислений в таких условиях необходимо
иметь возможность распределять вычислительную
нагрузку и организовать информационное
взаимодействие (передачу данных) между
процессорами.
Наиболее распространёнными программными
средствами суперкомпьютеров, также как
и параллельных или распределённых компьютерных
систем, являются интерфейсы программирования
приложений (API) на основе MPI и PVM, и решения
на базе программного обеспечения, позволяющего
создавать суперкомпьютеры даже на базе
обыкновенных рабочих станций и персональных
компьютеров. Среди пользователей Linux
популярны несколько программ:
1. MPICH, distcc - специализированные средства для распараллеливания работы программ.
2. Linux Virtual Server, Linux-HA — узловое ПО для распределения запросов между вычислительными серверами.
3. MOSIX, openMosix, Kerrighed, OpenSSI — полнофункциональные кластерные среды, встроенные в ядро, автоматически распределяющие задачи между однородными узлами. OpenSSI, openMosix и Kerrighed создают среду единой операционной системы между узлами.
Как было сказано выше, интерфейсы API обычно строятся на основе MPI и PVM. MPI (Message Passing Interface - интерфейс передачи сообщений), PVM (Parallel Virtual Machine - параллельная виртуальная машина).
Обе системы реализуют модель передачи сообщений, содержат библиотеки функций и подпрограмм для стандартных языков программирования С, С++, Fortran обеспечивают взаимодействия "точка-точка" и групповые. В то же время системы имеют и существенные отличия.
И PVM, и MPI предоставляют возможность логической связи машин в единую вычислительную систему. И PVM, и MPI содержит больше количество библиотек разработки параллельных программ для языков Fortran, C, Python, Java а так же для многих других. Обе системы реализуют модель передачи сообщений.
2.5 Прикладное программное обеспечение
2.5.1 Наиболее популярные параллельные прикладные программные пакеты
Иногда суперкомпьютеры используются для работы только с одним приложением, использующим всю память и все процессоры системы; в других случаях они обеспечивают выполнение большого числа разнообразных приложений.
Сегодня можно говорить о том, что практически для всех задач суперкомпьютинга успешно применяются кластерные системы — от расчетов для науки и промышленности до управления базами данных. Фактически любые приложения, требующие высокопроизводительных вычислений, имеют сейчас параллельные версии, которые позволяют разбивать задачу на фрагменты и обсчитывать ее параллельно на многих узлах кластера. Например, для инженерных расчетов (прочностные расчеты, аэромеханика, гидро- и газодинамика) традиционно применяются так называемые сеточные методы, когда область вычислений разбивается на ячейки, каждая из которых становится отдельной единицей вычислений. Эти ячейки обсчитываются независимо на разных узлах кластера, а для получения общей картины на каждом шаге вычислений происходит обмен данными, распространенными в пограничных областях.
Инженерные:
- СFD, CAD, CAE, т. е. гидро- и газодинамика,
прочностной анализ, проектирование и
расчет конструкций: программные пакеты
FLUENT компании Fluent, пакеты STAR-CD и STAR CCM+, MAGMASOFT,
Altair HyperWorks, в том числе российская разработка
FlowVision от компании «ТЕСИС».
- расчеты столкновения конструкций и
FEA (конечно-элементный анализ): LS-DYNA от
LSTC, программные пакеты от ABAQUS, ANSYS, MSC.Software;
поиск новых лекарств, генетика и др. —
программные пакеты от TurboWorx;
- ПО для обработки геофизических данных
для нефтедобывающей отрасли: программные
средства компаний Paradigm, Schlumberger.
Информация о работе Изучение аппаратного и программного обеспечения персонального компьютер