Автор: Пользователь скрыл имя, 15 Сентября 2011 в 17:02, курсовая работа
Данная работа состоит из трех взаимосвязанных тематических разделов.
Первый из них содержит информацию о математическом обеспечении параллельных вычислительных систем, о способах приема, обработки, хранения информации, о функционировании элементов высокопроизводительных систем.
Второй раздел работы посвящен аппаратной части параллельных вычислений. В этой части содержится информация о технологиях параллельных вычислений, классификации процессоров, принципах работы высокопроизводительных систем.
Третий раздел включает в себя информацию, касающуюся практического использования ресурсов и возможностей параллельных вычислительных систем в решении задач из разных областей науки и техники. Также здесь приводятся примеры нескольких вычислительных алгоритмов.
Для
того чтобы построить
Кластеры рабочих станций обычно называют Беовульф-кластерами (Beowulf cluster — по одноименному проекту). Типичный современный Беовульф-кластер представляет собой кластер рабочих станций, связанных локальной сетью Ethernet и обычно работающих под управлением ОС Linux, хотя в настоящее время разнообразие Беовульф-кластеров достаточно велико.
Взаимодействие
компьютеров в кластере может
быть организовано с помощью сети
Ethernet 10 или 100 Мбит/с. Это наиболее экономичное
решение, но не самое эффективное (время
отклика около 100 микросекунд). Сеть на
основе Gigabit Ethernet имеет пропускную способность
на порядок больше. Имеются и другие возможности,
это сети Myrinet, Giganet cLAN и SCI (время отклика
10—20 микросекунд). Наибольшая пропускная
способность у сети SCI (до 500 Мбит/с), поэтому
данный вариант часто используется в кластерах.
Кластерные системы можно отнести к MIMD-системам
с распределенной памятью.
2.12 Примеры архитектур суперкомпьютеров
Архитектура суперкомпьютера NEC SX-4
NEC SX-4 1996
года выпуска (NEC — японская
фирма, один из крупнейших
Каждый процессор состоит из векторного модуля, скалярного модуля и модуля обработки команд. Тактовая частота относительно невелика — 125 МГц. Векторный модуль развивает максимальное быстродействие 2 Гфлоп/с. Скалярный модуль имеет обычную суперскалярную архитектуру с той же тактовой частотой, что и векторный модуль, и максимальное быстродействие 250 Мфлоп/с. Процессор поддерживает форматы представления чисел с плавающей точкой IEEE, Cray и IBM, а пользователь может выбрать тип используемой арифметики во время трансляции программы.
Compaq AlphaServer SC
Эта система 1999 года выпуска представляет собой симметричную многопроцессорную систему с распределенной памятью, RISC-архитектурой и коммутационной матрицей. Программное обеспечение — ОС Digital UNIX, трансляторы для языков FORTRAN, High-Performance FORTRAN (HPF), С и C++. Тактовая частота 833 МГц, максимальный размер оперативной памяти 2 Тб и максимальное число процессоров 512. Скорость обмена между процессором и памятью 1,33 Гбайт/с и между ПЭ 210-Мбайт/с. Теоретическое максимальное быстродействие каждого процессора 1,67 Гфлоп/с, а всей системы 853 Гфлоп/с.
Каждый узел представляет собой 4-процессорную симметричную систему (Compaq ES40). Процессоры — Alpha 21264a (EV67). В каждом узле используется коммуникационная матрица с пропускной способностью 5,2 Гбайт/с и разделяемая память. Узлы собраны в кластер и соединяются сетью QsNet (SQW Ltd.) с топологией "толстого дерева".
Если для выполнения параллельной программы достаточно не более четырех процессоров, можно использовать модель программирования с разделяемой памятью (например, с использованием ОрепМР).
Архитектура суперкомпьютера Cray SX-6
В 2001 году фирма Cray Inc. совместно с NEC выпустила на рынок масштабируемый, параллельно-векторный суперкомпьютер Cray SX-6, один из наиболее мощных современных суперкомпьютеров. Cray SX-6 представляет собой симметричную мультипроцессорную систему, строительными блоками которой являются параллельно-векторные процессорные узлы. Узлы состоят из нескольких (от двух до восьми) векторных процессоров, максимальное быстродействие каждого из них составляет 8 Гфлоп. Каждый процессор имеет доступ к разделяемой высокопроизводительной памяти объемом от 16 до 64 Гбайт и скоростью передачи данных 256 Гбайт/с. Конфигурации, состоящие из нескольких узлов, развивают максимальное быстродействие до 8 Тфлоп (один триллион операций с плавающей точкой в секунду), имеют оперативную память объемом 8 Тбайт и скорость обмена данными с устройствами ВВ 800 Гбайт/с.
Cray T3E (1350)
Это мультипроцессорная вычислительная система 2000 года выпуска, с распределенной памятью построена из RISC-процессоров. Топология коммуникационной сети — трехмерный тор. Операционная система UNICOS/mk (ОС UNIX с микроядром). Трансляторы для языков FORTRAN, HPF, C/C++. Тактовая частота 675 МГц. Количество процессоров от 40 до 2176.
Максимальный объем оперативной памяти для каждого узла 512 Мбайт и максимальное быстродействие 2938 Гфлоп/с. В отличие от предшественника — Cray T3D, данной системе не требуется фронтальный компьютер.
В системе используется процессор Alpha21164A, однако, при необходимости, его несложно заменить другим, например, более быстродействующим процессором. Пропускная способность канала связи между процессорами 325 Мбайт/с.
Поддерживаются модели программирования MPI, PVM, HPF, собственная библиотека обмена сообщениями Cray shmem. Быстродействие, полученное при решении систем линейных алгебраических уравнений, достигает 1,12 Тфлоп/с.
Cray MTA-2
Это мультипроцессорная
система с распределенной памятью,
2001 года выпуска. Работает под управлением
ОС BSD. Количество процессоров до 256.
В данной системе используется многопоточная
архитектура. При выполнении программы
поток команд разбивается на части,
которые могут обрабатываться одновременно.
Если, например, обращение к памяти
в каком-либо из потоков не может быть
выполнено, этот поток приостанавливается,
а вместо него активизируется другой поток.
Коммуникационная сеть представляет собой
трехмерный куб. Каждый узел имеет собственный
порт ввода/вывода. Параллелизм в многопоточной
архитектуре выявляется и реализуется
автоматически, однако в системе Cray MTA-2
могут использоваться и явные модели параллельного
программирования.
Глава
3. Практическое применение
методов параллельных
вычислений.
3.1 Языки параллельного программирования
Применение параллельных архитектур повышает производительность при решении задач, явно сводимых к обработке векторов. Но автоматические методы распараллеливания редко способны обеспечить значительное ускорение вычислений. Более успешным может быть выражение языковыми средствами параллелизма на уровне постановки задачи. В таком случае при оптимизирующей компиляции возможен аккуратный выбор эффективной схемы параллелизма.
И
в настоящее время для
Рассмотрим кратко основные языки и их расширения.
Fortran
Fortran — первый реализованный язык программирования высокого уровня, правда, с одной небольшой оговоркой — для машин, построенных по классической схеме фон Неймана. Фортран широко используется в первую очередь для научных и инженерных вычислений. Одно из преимуществ современного Фортрана — большое количество написанных на нём программ и библиотек подпрограмм.
Диалекты языка Fortran: Fortran-DVM, Cray MPP Fortran, F--, Fortran 90/95, Fortran D95, Fortran M, Fx, HPF, Opus, Vienna Fortran.
Fortran D95 - экспериментальный язык программирования, основанный на HPF. Расширения направлены на поддержку основных классов параллельных приложений, работающих с большими массивами данных, нерегулярными и разреженными матрицами и т.д.
Fortran M - небольшой набор расширений языка Fortran, предоставляющих возможность модульной разработки последовательных и параллельных программ. Есть средства порождения процессов и их коммуникации путем посылки сообщений.
HPF - дальнейшее развитие языка Fortran 90. Включены богатые средства для распределения данных по процессорам. Необходимые коммуникации и синхронизации реализуются компилятором. Часть расширений реализована в виде функций и операторов языка, а часть - в виде директив компилятору.
Vienna Fortran 90 - дальнейшее развитие языка Fortran 90. Включает в себя многочисленные возможности распределения массивов данных по секциям процессорных массивов, а также распределения итераций циклов.
C/C++
Си— стандартизированный процедурный язык программирования, разработанный в начале 1970-х годо. Си был создан для использования в операционной системе UNIX. Для языка Си характерны современный набор конструкций управления потоком выполнения, структур данных и обширный набор операций.
C++
— компилируемый статически
Charm/Charm++ - параллельные расширения языков C и C++ соответственно. Программы, написанные с их использованием, могут выполняться на компьютерах как с общей, так и с распределенной памятью.
Cilk - язык программирования с поддержкой многопоточности, базирующийся на языке C. Программист должен заботиться о задании максимального параллелизма, а его использование и конкретную загрузку процессоров определяет Cilk runtime system.
HPC - проект, разрабатываемый в CRIM (Centre de Recherche Informatique de MontrВal). Цель проекта - создание на основе языка C средства для поддержки параллельных вычислений на большом количестве различных платформ. Параллельные расширения языка строятся по аналогии с языком HPF.
MPL
- объектно-ориентированный язык
программирования, базирующийся на
языке C++. Распределение данных
задается программистом, а все
необходимые пересылки и
mpC - язык программирования, основанный на языках C и C, предоставляющий средства создания параллельных программ для компьютеров с распределенной памятью. Посылка сообщений организована с использованием интерфейса MPI.
MPC++
- расширение языка C++, предназначенное
для написания параллельных
Adl
Adl - функциональный язык с небольшим числом конструкций и типов данных, разработанный для написания параллельных программ. Ориентирован на программирование абстрактной машины с распределенной памятью.
Ada
Ada - универсальный язык программирования, включающий в себя средства для создания параллельных программ. Официальный язык программирования министерства обороны США. Существует множество компиляторов для самых разных платформ.
MC#
MC#
- новый проект по созданию
асинхронного параллельного
DVM
DVM-система предназначена для создания переносимых и эффективных вычислительных приложений на языках C-DVM и Fortran-DVM для параллельных компьютеров с различной архитектурой. Аббревиатура DVM соответствует двум понятиям: Distributed Virtual Memory и Distributed Virtual Machine.
Linda
Linda - параллельный язык программирования. Программа рассматривается как совокупность процессов, которые могут обмениваться данными через пространство кортежей. В чистом виде практически не встречается, чаще всего используется совместно с другими языками высокого уровня как средство общения параллельных процессов.
NESL
NESL
- язык параллельного