Архитектура параллельных вычислений

Автор: Пользователь скрыл имя, 13 Ноября 2011 в 18:59, курсовая работа

Описание работы

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

Работа содержит 1 файл

Parallel programming architecture.docx

— 1.06 Мб (Скачать)

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

      Кластеры  рабочих станций обычно называют Беовульф-кластерами (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 — японская  фирма, один из крупнейших производителей  суперкомпьютеров), является параллельно-векторным  компьютером с двухступенчатой  архитектурой. Основным строительным  блоком является узел, содержащий  до 32 процессоров с общей пиковой  производительностью 64 Гфлоп/с. Процессоры  в узле соединяются посредством  коммутационной матрицы с 1024 банками  памяти общим объемом до 16 Гбайт.  Кроме того, каждый узел (рис. 1.26) поддерживает до 4 модулей расширенной  памяти (XMU — Extended Memory Unit) с суммарным объемом до 32 Гбайт оперативной памяти и 4 процессорами ВВ (IOР — I/O Processor).

Каждый  процессор состоит из векторного модуля, скалярного модуля и модуля обработки команд. Тактовая частота  относительно невелика — 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++ — компилируемый статически типизированный  язык программирования общего  назначения. В сравнении с его  предшественником — языком C, —  наибольшее внимание уделено  поддержке объектно-ориентированного  и обобщённого программирования.

      Charm/Charm++ - параллельные расширения языков C и C++ соответственно. Программы,  написанные с их использованием, могут выполняться на компьютерах как с общей, так и с распределенной памятью.

      Cilk - язык программирования с поддержкой  многопоточности, базирующийся на  языке C. Программист должен заботиться  о задании максимального параллелизма, а его использование и конкретную  загрузку процессоров определяет Cilk runtime system.

      HPC - проект, разрабатываемый в CRIM (Centre de Recherche Informatique de MontrВal). Цель проекта - создание на основе языка C средства для поддержки параллельных вычислений на большом количестве различных платформ. Параллельные расширения языка строятся по аналогии с языком HPF.

      MPL - объектно-ориентированный язык  программирования, базирующийся на  языке C++. Распределение данных  задается программистом, а все  необходимые пересылки и синхронизации  определяются компилятором и  осуществляются во время исполнения  с помощью Mentat run-time system.

      mpC - язык программирования, основанный  на языках C и C, предоставляющий  средства создания параллельных  программ для компьютеров с  распределенной памятью.  Посылка  сообщений организована с использованием  интерфейса MPI.

      MPC++ - расширение языка C++, предназначенное  для написания параллельных программ. Каждому процессору параллельного  компьютера сопоставляется один  процесс, который в свою очередь  может состоять из нескольких  потоков.

Adl

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

Ada

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

Информация о работе Архитектура параллельных вычислений