Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

khor32

.pdf
Скачиваний:
26
Добавлен:
29.02.2016
Размер:
8.16 Mб
Скачать

3.2. Техническая реализация модели коллектива вычислителей

свойству однородности наращиваемость ВС осуществляется простым под-

ключением дополнительных вычислений без конструктивны изменений пер-

воначального состава системы. При этом достигается простота настройки ПО

на заданное число вычислителей в системе. На основании последнего обеспечивается совместимость ВС различной производительности.

Полнота воплощения принципа параллелизма при выполнении операций позволяет достичь априори заданной производительности ВС как в монопрограммном режиме (при решении одной сложной задачи, т. e. задачи c большим числом операций), так и в мyльтипрогpaммных режимах (при обработке наборов и обслуживании потоков задач произвольной сложности).

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

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

Реконфнгурнруемоеть (Reconfigurability) ВС. Структурная и функциональная гибкости ВС обусловлены широкими возможностями систем по

статической и динамической реконфигурации. Статическая реконфигура-

ция ВС обеспечивается: варьированием числа вычислителей, их структуры и

состава; выбором дня вычислителей числа полюсов для связи c другими вы-

числителями; возможностью построения структур в виде графов, относя-

щиxся к различным классам; допустимостью применения в качестве связен., каналов различных типов, различной физической природы и различной про-

тяженности и т. п. Благодаря приспособленности ВС к статической реконфигурации достигается адаптация системы под область применения на этапе ее формирования.

Динамическая реконфигурация ВС поддерживается возможностью об-

разования в системах таких (виртуальных) подсистем, структуры и функщио-

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

Способность ВС к динамической реконфигурации является следстви-

ем полноты воплощения принципов коллектива вычислителей и прежде все-

го принципа пpогpаммируемости структуры. Эта способность ВС позволяет

123

3. Архитектура вычислительh ых систем

ей в процессе функционирования проводить автоматическую перенастpойку своей структуры для реализации обменов информацией между вычислителями, осуществлять «подстройку» состояний функциональных устройств и узлов в вычислителях c целью достижения адекватности между ВС и сово-

купностью совместно протекающих в ней прок ессов.

Надежность и живучесть (Reliability and Robustness) ВС. Данные два понятия семантически близки, оба призваны характеризовать архитектурные способности ВС по выполнению возле.гаемых на них функций. Однако каждое из них отражает специфические особенности ВС по использо- ванию исправных ресурсов при переработке ин формации.

Под надежностью ВС понимается ее способность к автоматической (программной) настройке и организации фун кционирования таких структурных схем, которые при отказах и восстановлении вычислителей обеспечивают заданный уровень производительности или, говоря иначе, возможность использовать фиксированное число ж правных вычислителей (при реализации параллельных программ решения Сложных задач). Это понятие характеризует возможности ВС по переработке информации при наличии фиксированной структурной избыточности (представленной частью вычислителей) и при использовании параллельных программ c заданным числом

ветвей.

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

дежной реализации параллельных программ c фиксированным числом вет-

вей, выступают как виртуaльные системы (дос гаточно близкие к системам c резервом).

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

параллельной программы производительность в заданных пределах или возможность использования всех исправных вычислителей. Понятие «живу-

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

пускающих варьирование числа ветвей в известных пределах.

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

124

3.2. Техническая реализация модели коллектива вычислителей

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

приводит лишь к некоторому снижению производительности, т. e. к увели-

..

чению времени реализации параллельной программы c переменным числом ветвей. Понятия полного и частичного восстановления ВС очевидны.

B живучих ВС допустимо использование аппаратypной избыточности

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

Следует подчеркнуть, что в живучей ВС в любой момент функциони-

рования используется суммарная производительность всех исправных вы-

числителей. Из этого следует, что программы решения задач должны обладать свойством адаптируемости (под число исправных вычислителей) и

иметь информационную избыточность.

Ясно, что описанные выше принципы технической реализации ВС как коллективов вычислителей (см. рaзд. 3.2.1) являются необходимыми усло-

виями достижения ими свойства живучести.

Самоконтроль и самодиагностика (self-testing and self-diagnostics)

ВС. Организация надежного и живучего функционирования ВС связана c контролем правильности их работы и c локализацией неисправностей в них. B системах-коллективах вычислителей может быть применен нетрадиционныи подход к контролю и диагностике:

1) в качестве контpольно-диагностического ядра ВС могут быть использованы любые исправные вычислители и в пределе ядро любого произвольно выбранного вычислителя;

2) выбор ядра системы и определение ее исправности могут быть выполнены автоматически (c помощью средств ВС).

Предлагаемый подход позволяет говорить o самоконтроле и самодиагностике ВС. Заключение об исправности или неисправности отдельных вычислителей системы принимается коллективно всеми вычислителями на

основе сопоставления их индивидуальных заключений об исправности соседних c ними вычислителей.

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

гyт быть достигнуты и в случае мультипрограммной работы.

Технико-экономическая эффективность (Technical-econoпiical Efficiency) ВС. Конструктивная однородность позволяет резко сократить сроки

разработки и изготовления систем, обеспечивает высокую технологичность

производства, упрощает и статическую, и динамическую реконфигурации

125

3. Архитектура вычислительн,,тх систем

ВС, облегчает их техническую эксплуатацию. Она существенно упрощает процесс организации взаимодействий между вь:числителями ВС и облегчает

создание ПО. Полнота воплощения трех осноЕ ных принципов модели кол-

..

лектива вычислителей позволяет заметно осла бить зависимость между повышением производительности ВС и увеличен нем трудоемкости их проектирования и изготовления, a также созданием системного ПО. Тем самым открывается возможность построения высокопроизводительных экономически приемлемых ВС при существующей физиксо-технологической базе. Более того, возможность неограниченно наращи: зать производительность позволяет применить для построения ВС микроэлектронные элементы c быстродействием, далеким от предельного, и следовательно, обладающие более высокой надежностью и меньшим энергопотреблением.

3.3. Параллельные алгoритмы

Рассмотрим основные понятия и приемь,i параллельного программирования и изучим методику крупноблочного распараллеливания сложных задач.

3.3.1. Элементарные понятия параллельного программирования

Понятие параллельного алгоритма (Parallel Algorithm) относится к

фундаментальным в теории ВС. Это понятие прежде всего ассоциируется c

ВС c массовым параллелизмом. Параллельный алгоритм описание про-

цесса обработки информации, ориентированноЕ ' на реализацию в коллективе вычислителей. Такой алгоритм в отличие от п эследовательного предусмат-

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

Параллельный алгоритм решения задачи составляет основу параллельной программы P, которая, в свою очередь, влив мет на алгоритм функционировaния коллектива вычислителей (см. разд. 3.1.3). Запись параллельного алгоритма на языке программирования, доступнс м коллективу вычислителеи,

называют параллельной программой (Parallel Р иоугат), a сам язык парал-

лельным (Parallel Language). Параллельные алгоритмы и программы следует

разрабатывать для задач, которые недоступны дт я решения на средствах, основанных на модели вычислителя (сложные или трудоемкие задачи).

Методы и алгоритмы обработки информа ции, решения задач, как правило, являются последовательными. Процесс (<приспособления» методов к реализации на коллективе вычислителей или п, эоцесс «расщепления» после-

126

3.3. Параллельные алгоритмы

a

Рис. 3.3. Фрагменты схемы параллельных алгоритмов:

a — локальное распараллеливание; б — глобальное распараллеливание; • — операторы

дoвaтeльныx алгоритмов решения сложных задач называется pacпapaплeлuвaнueм (Paralleling or Multisequencing).

Теоретическая и практическая деятельность по созданию пapaллeль-

ныx алгоритмов и программ обработки информации называется пapaллeльньuи пpoгpaммupoвaнueм (Parallel or Concurrent Programming).

Качество параллельного am opитмa (или его эффективность) определяется методикой pacпapaллeтпивaния сложных задач. При pacпapaллeливaнин задач

используют два подхода (рис. 3.3) — лoкaпьнoe и глoбaлвнoe (кpyпнoблoчнoe)

pacпapaплeлuвaкue. Первый подход opиeнтиpoвaн на paзбиeниe алгоритма pe-

шeния сложной задачи на предельно простые блоки (oпepaцин или операторы) и требует выдeлeния для каждого этапа вычислений максимально возможного

количества одновременно вьшoлняeлsыx блоков. Он не приводит к пapaллeтьны к алгоритмам, эффективно реализуемым коллективом вычиcлитeлeй. B са-

мом деле, процесс такого pacпapaплeликaния весьма тpyдceмoк, a получаемые параллельные алгоритмы xapaкrepизyются не только crpyктypнoй нeoд нopoднocrью, но и существенно разными объемами операций на различных этапах

вычислений. Последнее является серьезным препятствием на пути (aвтoмaтизaции) pacпapaллeливaния и обеспечения эффективной эксплуатации ресурсов коллектива вьriиcлитeлeй. Локальное распараллеливание позволяет оценить

предельные возможности коллектива вьчиcJитeлeй при решении сложных задач, пoлyчить предельные оценки по pacпapaплerп-шaшпo cлoжиыпc задач.

127

3. Архитектура вычислительтъых систем

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

подзадачи называют ветвями параллельного алгоритма, a соответствующие им программы ветвями параллельной Программы.

Пусть для вьшолнения параллельной программы выделяeтся (под)множество C = {с' } , i Е {1, 2, ... , п } , вычислителей с1 , тогда

и Р1 ветвь, реализуемая вычислителем с1 . Принцип однородности кол-

., лектива вычислителей позволяет создавать параллельные алгоритмы и про-

граммы c идентичными ветвями.

Одним из конструктивных приемов кру гiноблочного распараллеливания сложных задач является распараллеливан ие по циклам. Это позволяет

представить процесс решения задачи в виде п; ^раллельных ветвей, полученных расщеплением цикла на части, число которых в пределе равно числу повторений цикла. На входе и выходе из цикла процесс вычислений последовательный (см. рис. 3.3); доля последовательных участков в общем времени решения задачи незначительна. Говс ря на языке физики, процесс

вычислении можно представить в виде «пучь.остеи»

параллельных вет-

вей, периодически перемежающихся «узлами; >

последовательными про-

цессами. На переходах между пyчностями и узлами выполняются функции управления параллельным вычислительным п роцессом и обмены информациеи между ветвями.

Как правило, последовательные участки имеют место в начале и конце параллельной программы. На начальном участ ке осуществляется инициирование программы и ввод исходных данных, a 3а конечном вывод результатов (запись в архивные файлы). При достаточно полном воплощении

принципов модели коллектива вычислителей допустимы реализации в системе параллельных ввода и вывода информаци и.

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

Параллельная программа решения сложной задачи допускает свое представление в виде композиции

128

3.3.Параллельные алгоритмы

вкоторой Р i-я ветвь программы, а п допустимое число ветвей. Необходимо отметить, что каждая из ветвей P реализуется только на одном вычислителе коллектива, a информационные связи между ее операторами и операторами других ветвей {Рj } , j ^ i осуществляются при помощи специ-

aльных операторов обмена информацией.

B дальнейшем для краткости наряду c терминами «параллельный алгоритм» и «параллельная программа» будем использовать соответственно

«Р-aлгоритм» и «Р-программа».

3.3.2. Параллельный алгоритм умножения матриц

Структуры параллельных алгоритмов (и, следовательно, P-прогpaмм)

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

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

A[1: N, 1:K]x B[1:K, 1:M] = C[1:N, 1: М]

или, что то же самое,

а11

a12

a1 h

а1 к

Ы 1

Ы 2

 

 

4221

a'22

a2h

a2к

b21

b22

b2 j

b2М

а11

а2

 

 

Х

 

 

 

42ih

aiк

bh1 bh2

bhj

bhM

...

 

 

 

...

 

 

 

42N1

42N2

aNh

аNк

Ьк1 bK2

bKj

ЬкМ

 

 

С11

С12

С1]

 

С1М

 

 

 

С21 С22

с2

 

С2М

 

 

 

..

 

 

 

 

 

 

 

с11

с2

с

 

см

 

 

 

CN1 СN2

CNj

 

CNM

 

5-685

129

 

N >> n, к >> n, M >> п.

3. Архитектура вычислительнсых систем

где элементы матрицы-произведения C [1: N, 1: M] вычиcляютcя по формуле

к

CU = aih bhj , i = 1, N, j =1, М.

(3.8)

h=1

 

Допустим также, что параллельный алгс^ритм ориентирован на реализацию в ВС, состоящей из п вычислителей. Пусть размеры N х К и К х М матриц A и B достаточно большие и таковы, что имеют место неравенства При параллельной обр^ ^.ботке необходимо, чтобы ка-

ждый вычислитель производил расчет своих элементов матрицы C. При этом легко заметить, что размещение матриц A и B целиком в каждом вычислителе требует большой суммарной емкости памяти. Минимум емкости памяти будeт достигнут, если каждая из исходных матриц будет разбита на n равных частей, и в каждый вычислитель будет размещ дно по одной такой части мат-

риц A и B. Например, каждую из матриц A и В можно разрезать на n равных

соответственно горизонтальны и вертикальны К полос. Причем в первом вычислитeле можно разместить строки 1, 2, ... , ]лт / п [ и столбцы 1, 2, ... , ] М / п [ ;

в 1-м вычислителе строки (1 —1) • ]лт / п [ +1, (1 —1) • ] N / п [ + 2, ... , l ] N / п [

и столбцы (

(1 —1)

1 n[+ 2, ..., l]М/п[; в n-м вычислите-

ле строки (n -1).]N/n[+1, (п-1)•]Nln[+2, ..., п]N/ п[ и столбцы

(п —1). ]М/ п[ +1, (n-1) •]М/п[+2,..., п jМ n[ матриц A и B соответст-

венно. Через ]x[ обозначено такое ближайшее к x целое число, для которого справедливо неравенство ] х[ > x. При N и (или) M, некратном n, п]Nln [— N и

(или) п]М/п [— M последних строк и (или) сто: Iбцов соответствующих полос для п-го вычислителя заполняются нулями. B результате будет получено однородное распределение данных по вычислите гям коллектива (рис. 3.4).

Параллельный вычислительный процесс можно организовать следующим способом. Сначала первый вычислi':тель передает остальным вычислителям первую строку из своей полосы матрицы A. После этого каждый из вычислителей по формуле (3.8) рассчить гвает ]М/п[ элементов первой строки своей полосы для результирующей марицы C. Затем первый вычислитель рассылает во все остальные вычислитс ели вторую строку своей полосы матрицы A и производятся вычисления элементов второй строки матрицы C и так до тех пор, пока первый вычисл: мель не перешлет все строки

своей части матрицы A. После этого пересылками будут заниматься после-

.,

довательно второй вычислитель, третий вычислитель и далее до n-го вычислителя. Матрица C получается распределенной по вычислителям, причем в каждом будет своя вертикальная полоса (см. р: iс. 3.4). При этом следует учи-

130

3.3. Параллельныеupалгоритмы

ычислитель 1

ычислитель 2

х

Вычислитeль 1

Вычислитeль n

A x В = C

Рис. 3.4. Распределение данных по вычислителям ВС

тывать, что в результирующую матрицу C не должны включаться п]N/п [ — N последних строк из полученных вертикальных полос любого из вычислителей, a также п]М/п[ — M последних столбцов из полосы п-го вычислителя.

Итак, вследствие однородного распределения данных получены одинаковые ветви параллельного алгоритма, однако при этом ветви используют различные части данных. Поскольку для каждой ветви своих данных недостаточно, то ветви (точнее, реализующие их вычислители) вступают во взаимодействия (между ними осуществляются обмены информацией). Операторнaя схема 1-й ветви P-aлгоритма, реализуемая на вычислителе c номером 1, 1 < 1 < п, представлена на рис. 3.5.

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

 

х1 k+1)

L

 

= Ы + ау х^к), i = 1, 2, . . . , L,

 

 

j=1

где х1 k+1)

значение i-й переменной, рассчитываемое в (k + 1)-й итерации;

Ыи а коэффициенты, составляющие матрицу-столбец (вектор-столбец)

иматрицу соответственно. Условием окончания итераций является

тах х1 k+1) _ х1 k) < b.

Применяя методику крупноблочного распараллеливания и учитывая опыт построения P-aлгоритма умножения матриц (см. рис. 3.5), легко построить параллельный алгоритм для последней задачи, в котором, например, 1-я ветвь будет выполнять вычисления х, для i Е {(l — 1) ]L / п[ +1,

5*

131

3. Архитектура вычислительнъых систем

Начало

a: = о

 

 

Конец

i: = 1

 

A

 

Да

 

 

a:=a + 1

Нет

а =п

 

 

 

Прием

 

ai 1.

aih, ... а Kll

 

В ычисление

Передача

сiJ =

к

II ап, • • • ^ aih, • • • aixll

aih bh^

 

 

h= 1

 

1 :

= 1 + 1

Рис. 3.5. Схема ветви параллельного алгоритма умножения матриц:

a — номер передающего вычислителя; {i, 2, ... , а -1. a + 1, ..., п } — номера принимаю-

щих вычислителей; ]М / п [ (l -1) < ] < ] М / n [ l

(1— 1) ]L / n[ +2, ..., / 1/, / n[}, где L

число гiеременных х или, по сути,

предельно допустимое число ветвей P-алгоритма; n число вычислителей в системе; L > n.

3.3.3. Показатели эффективности параллельных алгоритмов

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

132

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]