Вы находитесь на странице: 1из 11

20. Принципы создания ветвей параллельных алгоритмов.

Рассмотрим основные принципы создания ветвей параллельных алгоритмов. Принцип 1. Режим параллельной обработки должен применяться для тех задач, которые не могут быть реализованы достаточно эффективно ресурсами одной ЭМ. Принцип 2. Параллельный алгоритм в первую очередь должен быть носителем «внутреннего» параллелизма решаемой задачи, а не архитектуры используемой вычислительной системы или известного для этой задачи последовательного алгоритма. Принцип 3. Крупноблочный иерархический подход. При этом параллельный алгоритм строится из возможности более крупных и редко взаимодействующих блоков. Данный подход является важнейшим способом достижения требуемой эффективности параллельных алгоритмов, предназначенных для реализации на многомодульных системах. При таком подходе схема последовательного метода (если она используется для распараллеливания) рассматривается как иерархическая структура, высший уровень которой – крупные блоки (сегменты), следующий уровень – подблоки крупных блоков и т.д., самый низкий уровень – операторы машинных команд. Процесс распараллеливания начинается с самого высокого уровня; переход на следующий уровень происходит всегда, если не удалось достичь нужной степени распараллеливания (эффективности) на данном. В качестве блоков одного уровня иерархии удобно использовать циклические структуры одинаковой вложенности. Аналогично используется иерархия в структуре данных, когда построение параллельного алгоритма происходит в первую очередь на основе распределения по ветвям обрабатываемой информации, а не операторов последовательного алгоритма. Принцип 4. Однородное распределение массивов и других структур данных по ветвям параллельного алгоритма – это основа для уменьшения времени, затрачиваемого на взаимодействие ветвей. При таком распределении имеют место:

равенство объемов распределяемых частей массивов; соответствие нумерации распределяемых частей массивов нумерации ветвей; распределение массивов на части параллельными линиями (многомерных массивов – параллельными поверхностями); дублирование массивов или частей одинаковым образом.

дублирование массивов или частей одинаковым образом.
дублирование массивов или частей одинаковым образом.
дублирование массивов или частей одинаковым образом.

Вопрос 21 Параллельные вычисления при умножении матриц.

построение параллельного алгоритма начинаем с построения ветвей, выполняющих достаточно большое число операций между двумя межпроцессорными взаимодействия. Пусть A[1:N, 1:M], B[1:M, 1:J] – матрицы больших размеров, произведение которых необходимо вычислить на системе, и пусть элементы результирующей матрицы C = A × B

M

c

ij

=

a

ik

c

kj

определяются по формуле Для распределения матриц по ветвям могут быть использованы горизонтальные, вертикальные, циклические горизонтальные, скошенные полосы, горизонтальные полосы с частичным дублированием, а также обычные блоки (клетки). Рассмотрим следующие распределения: матрицу A распределим по ветвям горизонтальными полосами, а матрицу B – вертикальными полосами; кроме того в каждой ветви вводится рабочий массив W = max{N, M, J}, который может содержать любую строку или столбец. Суть параллельных вычислений состоит в следующем: сначала первая ветвь передает первую строку матрицы A для других ветвей. После этого все ветви параллельно вычисляют элементы первой строки матрицы C. Затем то же повторяется со следующими строками первой ветви. Когда первая ветвь перешлет все свои строки, пересылками начинает заниматься вторая ветвь и т.д. до l. Результирующая матрица C получается распределенной вертикальными полосами. Если не строки матрицы A, а столбцы матрицы B, то C получается распределенной горизонтальными полосами. Однако такая трактовка параллельного алгоритма поднимает вопрос об операции трансляционного обмена (который рассматривается как операция глобального взаимодействия). В данном случае эта операция представляет собой последовательность локальных взаимодействий, а основная сущность состоит в посылке данных в канал и получение данных из канала. Такая реализация канала и взаимодействий через него может быть различной, в частности, передающая ветвь сдвигает данные соседним ветвям и сразу переходит к вычислениям; ветви, получившие данные, ретранслируют их своим соседям (ещё не имеющим эти данные) и также сразу переходят к вычислениям, таким образом, данные доходят до самых дальних ветвей.

k

= 1

.

Вопрос 22. Пространственная схема умножения матриц.

Рассмотрим простейшую схему умножения матриц.

11

12

13

14

21

22

23

24

31

32

33

34

41

42

43

44

11 12 13 14 21 22 23 24 31 32 33 34 41 42 43 44
11 12 13 14 21 22 23 24 31 32 33 34 41 42 43 44
11 12 13 14 21 22 23 24 31 32 33 34 41 42 43 44
11 12 13 14 21 22 23 24 31 32 33 34 41 42 43 44

B

A t=2 t=1 t=3 t=2 t=4 t=3 11 12 13 14 фр. 1 21 22
A
t=2
t=1
t=3
t=2
t=4
t=3
11
12
13
14
фр. 1
21
22
23
24
фр. 2
31
32
33
34
t=8
41
42
43
44
t=7
11
21
31
41
12
22
32
42
13
23
33
43
14
24
34
44

фр. 2 n -1

C

Данные продвигаются таким образом, что a ik встречает b ik в машине (i,j). Эта схема даёт

непосредственное представление об информационных потоках данных между «точками» (i,j)

двумерного пространства. Вычисление начинается в точке (1,1), которая передает значение a 11 и b 11 активизирует

точки (1,2) и (2,1) соответственно. Указанные точки далее активизирует своих соседей снизу и

справа и т.д. до точки (N,J). Каждая точка накапливает у себя значение c ij .

Рассмотренную двумерную систему вычислений можно интерпретировать и на

линейной подсистеме. И здесь возможны два варианта. Первый, соответствуют

крупноблочному распараллеливанию, который мы рассматривали вначале. Второй –

мелкоблочному распараллеливанию. В этом случае элементарные машины подсистемы

образуют цепочку из J элементов, каждая i-ая машина (i = 1, …, J) содержит столбец i матрицы

B. Значение матрицы A поэлементно и построчно поступают в машину слева, а затем

ретранслируются в машину справа.

Этот вариант позволяет уменьшить число обращений к памяти, реализовать основные

операции на быстрых регистрах и осуществлять обмен между ЭМ в рамках этих же

регистров.

Вопрос 23 Параллельные вычисления при решении задачи обращения матриц.

Необходимо определить матрицу D = {d ij } обратную матрице A = {a ij }, i, j = 1, …, n.

Рекуррентное соотношения имеют вид:

a ij

=

где:

n

1 d b b , i > j ik kj jj k = j +
1
d b
b
,
i
>
j
ik
kj
jj
k
=
j
+ 1
n
1
1
d b
b
,
i
=
j
(1)
ik
kj
jj
k
=
j
+ 1
n
c b
,
i
<
j
ik
kj
k
=
j
+ 1
j
1
=
a
b
c
,
i
j
b kj
ij
ij
ik
k = 1
1 (2)
i
c
=
b
1
a
b
c
, i
< j
ij
ii
ij
ik
kj
k = 1

Формулы (2) задают схему вычислений,

рассмотренную нами при LU-разложении

матрицы, только значение равные 1 получают

диагональные элементы не нижней (L), а

верхней (U) матрицы.

Из рекуррентных формул следует, что

при большом размере задачи ( n > > 1 )затраты

на выполнение скалярного произведения

элементов составляет самую значительную

часть всех вычислений.

В случае двумерного распараллеливания вычислений по формуле (2) нахождение

каждого элемента (i,j) (b ij или c ij ) осуществляется на ЭМ с координатами (i,j). Каждая машина

(i,j) должна хранить в своей памяти соответствующий исходный элемент a ij и программу

обработки. Кроме того, каждая машина (i,2) первого столбца подсистемы должна содержать

элемент

b

i1

=

a

i1

.

содержать элемент b i 1 = a i 1 . Обработка данных начинается от м

Обработка данных начинается от

машины (1,2), которая на первом шаге

передачей

операнда

b

11

1

=

a

1

11

направо

и

вычисленного элемента

активизирует соседние машины с

координатами (1,3) и (2,2) соответственно. На

втором шаге машина (1,3) определяет

1 вниз

c

12

=

a

12

b

11

c

13

=

a

13

b

11

1 и передаёт его машине (2,3), а

1 ретранслирует в

машину (1,4). На этом же шаге машина (2,2)

передает b 21 в машину (2,3), Нетранслирует

принятый операнд с 12 в машину (3,2),

определяет и передает в ЭМ (2,3) элемент

принятый операнд

b

11

b

22

1

=

(

a

22

b

22

c

12

)

1

и т. д.

Вопрос 24 Иерархические параллельные алгоритмы

Одним из важнейших вопросов использования параллельных алгоритмов является

вопрос о переносимости не только программ, но и более абстрактных их представителей, а

именно алгоритмов. То есть желательно создавать такие алгоритмы, которые были бы

достаточно эффективны или легко трансформируемы для широкого класса архитектур.

Здесь следует отличить, что частично проблема переносимости решается на основе

реконфигурируемости архитектур, которые адаптируются к составу и структуре каждого

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

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

необходимо соответствующим образом ориентировать и параллельные алгоритмы.

Схематически проблему переносимости параллельных алгоритмов можно

представить следующим образом. Задача 1 Язык Задача 2 описания
представить следующим образом.
Задача 1
Язык
Задача 2
описания
паралл.
прогр.
Задача n
Арх. 1 Базовый Арх.2 язык описания архитект. Арх. n
Арх. 1
Базовый
Арх.2
язык
описания
архитект.
Арх. n

В этой схеме каждая задача представлена на языке описания параллельных

алгоритмов (непосредственно или путем трансляции с других входных языков) (подпр. №1),

а каждая архитектура и её возможности на базовом языке описания архитектур (подпр. №3)

и , наконец, по описаниям задачи и архитектуры должна подбираться наиболее подходящая

реализация вычислительного процесса (подгр №2).

При реализации этой схемы можно выделить два подхода:

Обнаружение параллелизма задачи представленной на обычном (последовательном)

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

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

эффективность распараллеливания.

Выражение параллелизма системы в синтаксисе языка. Основной недостаток

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

составлять её специально, ориентируясь на механизм компилятора, либо на архитектуру

машины.

Обобщение опыта реализаций этих подходов в построении языка, который должен

выражать параллелизм задачи.

Вопрос 25 Внутренний параллелизм задачи и проблемы переносимости.

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

- процессорные

элементы. Между действиями и между процессорными элементами имеются определенные связи.

Пусть

M

1

, M

2

,

,

M

m

- действия некоторой задачи, а

P , P

1

2

,

,

P

n

Определим следующие совокупности матриц матрицы X , где

X

ik

=

1,

0,

если

M

i

назначен на

P

k

, в противном случае 0.

Матрица Q , где

M i не может вычисляться на

q

ik

u

ij

представляет стоимость обработки

= 0

P

k

), матрица V

, где

u

ij

между

означает, что

есть объем данных посылаемых от

- стоимость

, если процессорные элементы не

M

i

на

P

k

(

q

ik

=

M

i

к

M

j

(если

, модули не взаимодействуют), матрица

P

k

и

P

l

(

d

kl

=

D , где

d

kl

взаимодействий

взаимодействуют). Тогда стоимость отображения X

… представлена следующим выражением:

cos t(x)

=

k l

q

ik

x

ik

+

l< k

j< i

wu d

ij

kl

x

ik

x

jl

где w - масштабный коэффициент. Это выражение может сопровождаться определенными ограничениями на память.

s x

i ik

R

k

,

k

= 1,2,

,

s i ёмкость памяти требуемая для На реальное время

,

,

n

u x

i

ik

T k ,

k

=

1,2,

,

n

где

M

i

где

, а

R

k

- наличная (локальная) память у

P

k

.

- временное ограничение на обработку модулей

попавших в

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

u i - время, требуемое для

P

k

.

M

i

,

T

k

Вопрос 26 Уровни распараллеливания алгоритмов.

Важным шагом в построении иерархического параллельного алгоритма является посторенние графика зависимости скорости С решения задачи от числа выделенных процессорных элементов h .

процессорных элементов h . Из распараллеливания: рисунка

Из

распараллеливания:

рисунка

следует,

что

существует

три

области

1.

Суперэффективного

 

2.

Эффективного

 

3.

Неэффективного

 

В

областях

1

и

2

скорость

увеличивается практически

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

алгебры эти области, как правило, определяются выражениями:

Вывод: параллельный алгоритм должен строиться сначала в ориентации на параллелизм областей 1 или 2 в предположении отображения его на достаточно мощные процессорные элементы, а затем – в ориентации на параллелизм области 2 или 3 в предположении, что каждый мощный процессорный элемент может рассматриваться как конвейерно-потоковая или другая система с достаточно простыми обрабатывающими модулями. Следовательно, если природный параллелизм задачи существует объективно, но для того чтобы с ним можно было работать, необходимо его формально определить, что в общем случае не является однозначным. Поэтому о природном параллелизме можно говорить только с точки зрения выбранной (достаточно общей) модели параллельных вычислений. Но это ведет к проблеме отображения общей модели в архитектуру конкретной вычислительной системы, что в свою очередь, так же сложно. Чтобы уменьшить трудности отображения и достичь хорошей эффективности, предлагается общую модель рассматривать как специальное (иерархическое) объединение нескольких моделей, действия (модули) в которых становятся всё более мелкими с ростом уровня иерархии. Представление иерархического параллельного алгоритма П из n уровней рассматривается как кортеж параллельных алгоритмов.

П i отображает часть присущего задаче

параллелизма, причем алгоритмический вес (сложность) отдельного действия в уменьшается с ростом i , как правило, рассматривается (в настоящее время) n < 3 .

h

1

N, N

h

2

N

2

, h

3

N

2

.

П

=

время) n < 3 . h 1 N , N h 2 N 2 , h

время) n < 3 . h 1 N , N h 2 N 2 , h

П

1

, П

2

,

,

П

n

время) n < 3 . h 1 N , N h 2 N 2 , h

время) n < 3 . h 1 N , N h 2 N 2 , h

,

где

каждым

П

i

Вопрос 27 Алгоритмы планирования и управления мультипрограммной ЭВМ.

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

1. диспетчера;

2. профилактики;

3. параллельной обработки;

4. автономной работы.

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

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

1. достижение большего быстродействия при решении одной задачи;

2. обеспечения совместного решения задач различной сложности и размера;

3. реализацию заданной программной способности для задач определенного класса;

4. решение поставленного набора задач к поставленному времени;

5. организацию отказоустойчивости вычислений;

6. остальные функции планировщика традиционным мультипрограммных ЭВМ.

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

Вопрос

реконфигурируемой структурой.

28

Алгоритмы

планирования

и

управления

в

системах

с

Вопрос 29 Принципы описания каналов и их протоколы на языке ОССАМ

Ранее мы уже рассматривали транспьютеры фирмы Iumos, которая сейчас входит в

концерн SGS Thomson. (Это транспьютеры Т-2хх, Т-4хх, Т-8хх). Транспьютеры содержат на одном кристалле процессор, блок памяти и коммуникационные каналы – линки, - объединяющие транспьютеры в параллельную систему. Линки этих транспьютеров называются OS линками (oversampled). Семейства этих транспьютеров имеют один и тот же протокол передачи данных, который характеризуется следующими особенностями:

- система имеет распределенную память и взаимодействие между вычислительными

модулями выполняется через обмен сообщениями;

- передача данных между транспьютерами выполняется по двум проводам;

- для инициализации системы после выключения питания и управления используется

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

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

битов, что приводит к передаче байтов без задержки между ними.
битов, что приводит к передаче байтов без задержки между ними.

Вопрос 30 Методы разработки спецификации задачи для создания ОССАМ– программы.