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

Автор: Пользователь скрыл имя, 15 Сентября 2011 в 17:02, курсовая работа

Краткое описание

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

Файлы: 1 файл

Parallel programming architecture.docx

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

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

      Кластеры  рабочих станций обычно называют Беовульф-кластерами (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 - универсальный язык программирования, включающий в себя средства для создания параллельных программ. Официальный язык программирования министерства обороны США. Существует множество компиляторов для самых разных платформ.

MC#

      MC# - новый проект по созданию  асинхронного параллельного языка  программирования MC#, ориентированного  на кластерные и GRID-архитектуры,  который позволил бы использовать  все преимущества языка C# в  параллельном программировании.

DVM

      DVM-система  предназначена для создания переносимых и эффективных вычислительных приложений на языках C-DVM и Fortran-DVM для параллельных компьютеров с различной архитектурой.  Аббревиатура DVM соответствует двум понятиям: Distributed Virtual Memory и Distributed Virtual Machine.

Linda

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

NESL

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

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