Компьютерные науки : Дипломная работа: Массивно-параллельные суперкомпьютеры серии Cry T3 и кластерные системы класса BEOWULF
Дипломная работа: Массивно-параллельные суперкомпьютеры серии Cry T3 и кластерные системы класса BEOWULF
Дипломная работа
по дисциплине: Параллельное
программирование и параллельные вычисления
на тему: Массивно-параллельные
суперкомпьютеры серии Cry T3 и кластерные системы класса BEOWULF
Реферат
Курсовой проект содержит 38 страниц машинописного текста, 11
литературных источников, 12 рисунков.
Ключевые
слова: суперкомпьютер, архитектура, процессор, кластер, интерфейс, технология,
операнд, компиляция, команда, оптимизация, переменная, данные, регистр,
операция, итерационность,
конвейерность, электронно-вычислительная машина.
В данном
курсовом проекте рассматриваются многопроцессорные вычислительные системы Cry T3D(E) и Беовульф-кластеры рабочих станций, а также в все
сопутствующие этим двум темам понятия и определения необходимые для понятного
изложения материала.
Содержание
Введение
Основные понятия
1. Общие вопросы решения "больших
задач"
1.1 Современные задачи
науки и техники, требующие для решения суперкомпьютерных мощностей
1.2 Параллельная обработка данных
1.2.1 Принципиальная
возможность параллельной обработки
1.2.2 Абстрактные модели
параллельных вычислений
1.2.3 Способы параллельной обработки
данных, погрешность вычислений
1.3 Понятие параллельного
процесса и гранулы распараллеливания
1.4 Взаимодействие
параллельных процессов, синхронизация процессов
1.5 Возможное ускорение при
параллельных вычислениях (закон Амдаля)
2. Принципы построения
многопроцессорных вычислительных систем
2.1 Архитектура
многопроцессорных вычислительных систем
2.2 Распределение вычислений и данных
в многопроцессорных вычислительных системах с распределенной памятью
2.3 Классификация параллельных
вычислительных систем
2.4 Многопроцессорные
вычислительные системы c распределенной памятью
2.4.1 Массивно-параллельные
суперкомпьютеры серии Cry T3
2.4.2 Кластерные системы
класса BEOWULF
2.4.3 Коммуникационные
технологии, используемые при создании массово-параллельных суперкомпьютеров
Заключение
Список используемой
литературы
Введение
Еще на заре компьютерной эры, примерно в середине прошлого
века, конструкторы электронно-вычислительных машин задумались над возможностью
применения параллельных вычислений в компьютерах. Ведь увеличение
быстродействия только за счет совершенствования электронных компонентов
компьютера – достаточно дорогой способ, который, к тому же, сталкивается с
ограничениями, налагаемыми физическими законами. Так параллельная обработка
данных и параллелизм команд были введены в конструкцию компьютеров и сейчас
любой пользователь "персоналки", возможно, сам того не зная, работает
на параллельном компьютере.
Одной из заметных тенденций развития человечества является желание
максимально строго моделировать процессы окружающей действительности с целью
как улучшения условий жизни в настоящем, так и максимально достоверного
предсказания будущего. Математические методы и приемы цифрового моделирования
во многих случаях позволяют разрешать подобные проблемы, однако с течением
времени имеет место серьезное качественное и количественное усложнение
технологии решения задач. Во многих случаях ограничением является недостаток
вычислительных мощностей современных электронно-вычислительных машинах, но значимость
решаемых задач привлекли огромные финансовые ресурсы в область создания
сверхсложных электронно-вычислительных машин.
С некоторых
пор повышение быстродействия компьютеров традиционной (именуемой "фон Неймановской") архитектуры стало чрезмерно дорого
вследствие технологических ограничений при производстве процессоров, поэтому
разработчики обратили внимание на иной путь повышения производительности – объединение
электронно-вычислительных машин в многопроцессорные вычислительные системы. При этом отдельные фрагменты программы
параллельно (и одновременно) выполняются на различных процессорах, обмениваясь информацией
посредством внутренней компьютерной
сети.
Идея объединения
электронно-вычислительных машин с целью повышения, как производительности, так
и надежности известны с конца пятидесятых годов.
Требования
получить максимум производительности при минимальной стоимости привели к
разработке многопроцессорных вычислительных комплексов; известны системы такого
рода, объединяющие вычислительные мощности тысяч отдельных процессоров.
Следующим этапом являются попытки объединить миллионы разнородных компьютеров планеты
в единый вычислительный комплекс с огромной производительностью посредством
сети Internet. На сегодняшний день применение параллельных вычислительных систем является стратегическим направлением
развития вычислительной техники. Развитие "железа" с необходимостью
подкрепляются совершенствованием алгоритмической и программной компонент – технологий параллельного
программирования.
Метод распараллеливания
вычислений существует уже давно, организация совместного функционирования
множества независимых процессоров требует проведения серьезных
теоретико-практических исследований, без которых сложная и относительно
дорогостоящая многопроцессорная установка часто не только не превосходит, а
уступает по производительности традиционному компьютеру.
Потенциальная
возможность распараллеливания неодинакова для вычислительных задач различного
типа – она значительна для научных программ, содержащих много циклов и
длительных вычислений и существенно меньше для инженерных задач, для которых
характерен расчет по эмпирическим формулам.
В данном
курсовом проекте рассматриваются две основные темы:
1.
Многопроцессорные вычислительные системы
(массивно-параллельные
суперкомпьютеры) Cray T3D(E) с количеством процессоров от 40 до
2176. Это суперкомпьютеры с распределенной памятью на RISC-процессорах типа
Alpha21164A, с топологией коммуникационной сети – трехмерный тор, операционной
системой UNIX с микроядром и трансляторами для языков FORTRAN, HPF, C/C++. Поддерживаемые
модели программирования: MPI, PVM, HPF.
2.
Беовульф-кластеры
рабочих станций. Кластеры рабочих станций – совокупность рабочих станций,
соединенных в локальную сеть. Кластер – вычислительная система с распределенной
памятью и распределенным управлением. Кластерная система может обладать
производительностью, сравнимой с производительностью суперкомпьютеров. Кластеры рабочих станций обычно называют Беовульф-кластерами (Beowulf
cluster – по одноименному проекту), связанны локальной сетью Ethernet и
используют операционную систему Linux.
Также в данном
курсовом проекте рассматриваются все сопутствующие этим двум темам понятия и
определения необходимые для понятного изложения материала.
Основные понятия
Наиболее распространенной технологией программирования для
кластерных систем и параллельных компьютеров с распределенной памятью в
настоящее время является технология MPI. Основным способом взаимодействия параллельных процессов в таких
системах является передача сообщений друг другу. Это и отражено в названии
данной технологии – Message
Passing Interface (интерфейс передачи сообщений). Стандарт MPI фиксирует интерфейс, который должен соблюдаться как
системой программирования на каждой вычислительной платформе, так и
пользователем при создании своих программ. MPI поддерживает работу с языками Фортран и Си. Полная
версия интерфейса содержит описание более 125 процедур и функций.
Интерфейс MPI
поддерживает создание параллельных программ в стиле MIMD (Multiple Instruction Multiple Data), что подразумевает объединение процессов с
различными исходными текстами. Однако писать и отлаживать такие программы очень
сложно, поэтому на практике программисты, гораздо чаще используют SPMD-моделъ (Single Program Multiple Data) параллельного программирования, в рамках которой для всех параллельных
процессов используется один и тот же код. В настоящее время все больше и больше
реализаций MPI поддерживают работу с так называемыми
"нитями".
Поскольку MPI
является библиотекой, то при компиляции программы необходимо прилинковать
соответствующие библиотечные модули.
После получения выполнимого файла необходимо запустить его на
требуемом количестве процессоров.
После запуска одна и та же программа будет выполняться всеми
запущенными процессами, результат выполнения в зависимости от системы будет
выдаваться на терминал или записываться в файл.
MPI программа
это множество параллельных взаимодействующих процессов. Все процессы
порождаются один раз, образуя параллельную часть программы. В ходе выполнения MPI-программы порождение дополнительных
процессов или уничтожение существующих не допускается (в дальнейших версиях MPI такая возможность появилась). Каждый
процесс работает в своем адресном пространстве, никаких общих переменных или
данных в MPI нет. Основным способом
взаимодействия между процессами является явная посылка сообщений.
Для локализации взаимодействия параллельных процессов
программы можно создавать группы процессов, предоставляя им отдельную среду для
общения – коммуникатор. Состав образуемых групп произволен. Группы могут
полностью совпадать, входить одна в другую, не пересекаться или пересекаться
частично. Процессы могут взаимодействовать только внутри некоторого
коммуникатора, сообщения, отправленные в разных коммуникаторах, не пересекаются
и не мешают друг другу. Коммуникаторы имеют в языке Фортран тип integer (в языке Си – предопределенный тип MPI Comm).
При старте программы всегда считается, что все порожденные
процессы работают в рамках всеобъемлющего коммуникатора. Этот коммуникатор существует всегда и служит для
взаимодействия всех запущенных процессов MPI-программы. Все взаимодействия процессов протекают в
рамках определенного коммуникатора, сообщения, переданные в разных
коммуникаторах, никак не мешают друг другу.
Процессоры с сокращенным набором
команд (RISC). В основе
RISC-архитектуры (RISC – Reduced Instruction Set Computer) процессора лежит
идея увеличения скорости его работы за счет упрощения набора команд.
Исследования показали, что 33% команд типичной программы
составляют пересылки данных, 20% – условные ветвления и еще 16%
арифметические и логические операции. В подавляющем большинстве команд
вычисление адреса может быть выполнено быстро, за один цикл. Более сложные
режимы адресации используются примерно в 18% случаев. Около 75% операндов
являются скалярными, то есть переменными целого, вещественного, символьного
типа и т. д., а остальные являются массивами и структурами. 80% скалярных
переменных – локальные, а 90% структурных являются глобальными. Таким образом,
большинство операндов – это локальные операнды скалярных типов. Они могут
храниться в регистрах.
Согласно статистике, большая часть времени тратится на
обработку операторов "вызов подпрограммы" и "возврат из
подпрограммы". При компиляции эти операторы порождают длинные
последовательности машинных команд с большим числом обращений к памяти, поэтому
даже если доля этих операторов составляет всего 15%, они потребляют основную
часть процессорного времени. Только около 1% подпрограмм имеют более шести
параметров, а около 7% подпрограмм содержат более шести локальных переменных.
В результате изучения этой статистики был сделан вывод о том,
что в типичной программе доминируют простые операции: арифметические,
логические и пересылки данных. Доминируют и простые режимы адресации. Большая
часть операндов – это скалярные локальные переменные. Одним из важнейших
ресурсов повышения производительности является оптимизация указанных
операторов.
В основу RISC-архитектуры положены следующие принципы и идеи.
Набор команд должен быть ограниченным и включать только простые команды, время
выполнения которых после выборки и декодирования один такт или чуть больше.
Используется конвейерная обработка. Простые RISC-команды допускают эффективную
аппаратную реализацию, в то время как сложные команды могут быть реализованы
только средствами микропрограммирования. Конструкция устройства управления в
случае RISC-архитектуры упрощается, и это дает возможность процессору работать
на больших тактовых частотах. Использование простых команд позволяет эффективно
реализовать и конвейерную обработку данных, и выполнение команд.
Сложные команды RISC-процессором выполняются дольше, но их
количество относительно невелико. В RISC-процессорах небольшое число команд
адресуется к памяти. Выборка данных из оперативной памяти требует более одного
такта. Большая часть команд работает с операндами, находящимися в регистрах.
Все команды имеют унифицированный формат и фиксированную длину. Это упрощает и
ускоряет загрузку и декодирование команд, поскольку, например, код операции и
поле адреса всегда находятся в одной и той же позиции. Переменные и
промежуточные результаты вычислений могут храниться в регистрах. С учетом
статистики использования переменных, большую часть локальных переменных и параметров
процедур можно разместить в регистрах. При вызове новой процедуры содержимое
регистров обычно перемещается в оперативную память, однако, если количество
регистров достаточно велико, удается избежать значительной части длительных
операций обмена с памятью, заменив их операциями с регистрами. Благодаря
упрощенной архитектуре RISC-процессора, на микросхеме появляется место для
размещения дополнительного набора регистров.
В настоящее время вычислительные системы с RISC-архитектурой
занимают лидирующие позиции на мировом компьютерном рынке рабочих станций и
серверов. Развитие RISC-архитектуры связано с развитием компиляторов, которые
должны эффективно использовать преимущества большого регистрового файла,
конвейеризации и т. д.
1. Общие вопросы решения "больших задач"
Под термином
"большие задачи" обычно понимают проблемы, решение которых требует не
только построения сложных математических моделей, но и проведения огромного, на
многие порядки превышающие характерные для программируемых электронно-вычислительных
машин, количества вычислений. Здесь применяют с соответствующими ресурсами электронно-вычислительные
машины – размерами оперативной и внешней памяти, быстродействием линий передачи
информации и др.
Верхний
предел количества вычислений для "больших задач" определяется лишь
производительностью существующих на данный момент вычислительных систем. При "прогонке"
вычислительных задач в реальных условиях ставится не вопрос "решить задачу
вообще", а "решить за приемлемое время" (часы/десятки часов).
1.1 Современные
задачи науки и техники, требующие для решения суперкомпьютерных мощностей
Достаточно часто приходится сталкиваться с такими задачами,
которые, представляя немалую ценность для общества, не могут быть решены с
помощью относительно медленных компьютеров офисного или домашнего класса.
Единственная надежда в этом случае возлагается на компьютеры с большим
быстродействием, которые принято называть суперкомпьютерами. Только машины
такого класса могут справиться с обработкой больших объемов информации. Это
могут быть, например, статистические данные или результаты метеорологических
наблюдений, финансовая информация. Иногда скорость обработки имеет решающее
значение. В качестве примера можно привести составление прогноза погоды и
моделирование климатических изменений. Чем раньше предсказано стихийное
бедствие, тем больше возможностей подготовиться к нему. Важной задачей является
моделирование лекарственных средств, расшифровка генома человека, томография, в
том числе и медицинская, разведка месторождений нефти и газа. Примеров можно
привести много.
Моделирование процессов окружающей действительности с целью
как улучшения условий жизни в настоящем, так и достоверного предсказания
будущего, является одной из тенденций развития человечества. Математические
методы и приемы цифрового моделирования во многих случаях позволяют разрешать
подобные проблемы, однако с течением времени имеет место усложнение технологии
решения подобных задач. Во многих случаях ограничением является недостаток
вычислительных мощностей современных электронно-вычислительных машин.
Требования получить максимум производительности при
минимальной стоимости привели к разработке многопроцессорных вычислительных
комплексов; известны системы такого рода, объединяющие вычислительные мощности
тысяч отдельных процессоров.
Ниже перечислены некоторые области человеческой деятельности,
требующие для своего решения суперкомпьютерных мощностей использующих
параллельные вычисления:
v Предсказания погоды, климата и
глобальных изменений в атмосфере
v Науки о материалах
v Построение полупроводниковых приборов
v Сверхпроводимость
v Разработка фармацевтических
препаратов
v Генетика человека
v Астрономия
v Транспортные задачи большой
размерности
v Гидро и газодинамика
v Управляемый термоядерный синтез
v Разведка нефти и газа
v Вычислительные задачи наук о мировом
океане
v Распознавание и синтез речи, распознавание
изображений
Одна из
серьезнейших задач – моделирование климатической системы и предсказание погоды.
При этом совместно численно решаются уравнения динамики сплошной среды и
уравнения равновесной термодинамики. Для моделирования развития атмосферных
процессов на протяжении 100 лет и числе элементов дискретизации 2,6×106 (сетка с шагом 10 по широте и долготе по всей
поверхности Планеты при 20 слоях по высоте, состояние каждого элемента
описывается 10 компонентами) в любой момент времени состояние земной атмосферы
описывается 2,6×107 числами. При шаге дискретизации по
времени 10 минут за моделируемый промежуток времени необходимо определить 5×104 ансамблей (то есть 1014 необходимых числовых
значений промежуточных
вычислений). При оценке
числа необходимых для получения каждого промежуточного результата
вычислительных операций в 102÷103 общее
число необходимых для проведения численного эксперимента с глобальной моделью
атмосферы вычислений с плавающей точкой доходит до 1016÷1017.
Суперкомпьютер
с производительностью 1012 оп/сек при идеальном случае (полная загруженность и
эффективная алгоритмизация) будет выполнять такой эксперимент в течение
нескольких часов; для проведения полного процесса моделирования необходима
многократная (десятки/сотни раз) прогонка программы.
Проблема
супервычислений столь важна, что многие государства курируют работы в области
суперкомпьютерных технологий.
Государственная
поддержка прямо связана с тем, что независимость в области производства и
использования вычислительной техники отвечает интересам национальной
безопасности, а научный потенциал страны непосредственно связан и в большой
мере определяется уровнем развития вычислительной техники и математического
обеспечения.
С целью
объективности при сравнении производительность супер-электронно-вычислительных
машин рассчитывается на основе выполнения заранее известной тестовой задачи ("бенчмарка",
от англ. benchmark). Пиковая производительность определяется
максимальным числом операций, которое может быть выполнено за единичное время
при отсутствии связей между функциональными устройствами, характеризует потенциальные возможности аппаратуры и не зависит от выполняемой программы.
Недостатком
метода оценки пиковой производительности как числа выполняемых компьютером
команд в единицу времени (MIPS, Million Instruction Per Second) дает только самое общее представление о
быстродействии, так как не учитывает специфику конкретных программ (трудно предсказуемо,
в какое число и каких именно
инструкций процессора отобразится пользовательская программа).
Необходимо
отметить, что существуют аргументы против широкого практического применения
параллельных вычислений:
ü
Параллельные
вычислительные системы чрезмерно дороги. По подтверждаемому практикой закону Гроша, производительность компьютера растет
пропорционально квадрату его стоимости; в результате гораздо выгоднее получить
требуемую вычислительную мощность приобретением одного производительного
процессора, чем использование нескольких менее быстродействующих процессоров.
Контраргумент.
Рост быстродействия последовательных электронно-вычислительных машин не может
продолжаться бесконечно, компьютеры подвержены быстрому моральному старению и
необходимы частые финансовые затраты на покупку новых моделей. Практика
создания параллельных вычислительных систем класса Beowulf ясно показала
экономичность именно этого пути.
&uu |