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

ВВЕДЕНИЕ В МАТЕМАТИЧЕСКИЕ МЕТОДЫ

РАСПАРАЛЛЕЛИВАНИЯ АЛГОРИТМОВ

С.В. Баханович
Институт математики НАН Беларуси
Математическая модель алгоритма
Область вычислений V
Каждой операции алгоритма ставится в соответствие точка
многомерного целочисленного пространства. Размерность
пространства определяется глубиной вложенных циклов
программы. Координаты точки, как правило, – это упорядоченный
набор значений счетчиков циклов, при которых выполняется
операция алгоритма. Множество всех таких точек образуют
область вычисления алгоритма.

Множество векторов зависимостей Ф


Если между двумя операциями существует информационная
зависимость, то соответствующие им точки области вычислений
соединяются вектором. Множество всех таких векторов
составляют множество векторов зависимостей.
Информационная зависимость операций
Пусть S ( I ) и S ( J ) – операции алгоритма, приписанные точкам
I и J области вычислений V.

Определение
Операция S ( J ) зависит от операции S ( I ), если:
1) S ( I ) выполняется раньше S ( J );
2) S ( I ) и S ( J ) используют одно и то же данное и, по крайней
мере, одно из использований есть переопределение;
3) между операциями S ( I ) и S ( J ) это данное не
переопределяется.

Идентификация
Зависимость между операциями S ( I ) и S ( J ) идентифицируется
вектором зависимостей   J  I .
Типы зависимостей
Типы информационных зависимостей определяются характером
использования общих данных в операциях S ( I ) и S ( J ).

 Истинные зависимости
S ( I ): a = f ( )
S ( J ): b = g (a)

 Антизависимости
S ( I ): b = g (a)
S ( J ): a = f ( )

 Зависимости по выходу
S ( I ): a = f ( )
S ( J ): a = g ( )
Математическая модель алгоритма.
Пример
for i=1 to N do
for j=1 to N do
a[i][j] = a[i-1][j]+a[i][j-1]+a[i-1][j+1]

Область вычислений


V  (i, j )  Z 2 1  i  N , 1  j  N 
Множество векторов зависимостей
  (1,0), (0,1), (1, 1)
j

i
Распараллеливание алгоритма
Функция таймирования
t :V  Z,
Функция таймирования ставит в соответствие каждой операции S ( J )
алгоритма целое значение t ( J ), которое может быть интерпретиро-
вано как момент времени выполнения (условный) этой операции.

Условие сохранения зависимостей

t ( J )  t ( I ), J , I V , S ( I )  S ( J ).

Если операция S ( J ) информационно зависит от операции S ( I ),


то она должна иметь большее значение функции таймирования.
Операции, имеющие одинаковое значение функции таймирования
могут выполняться параллельно.
Таймирование алгоритмов
с однородными зависимостями
Алгоритм с однородными зависимостями
Алгоритм характеризуется однородными зависимостями, если для
любой пары точек J , J   V ,  , между операциями S ( J )
и S ( J   ) существует информационная зависимость.

Функция таймирования

t ( J )    J , J V  Z n ,   Z n .
Условие сохранения зависимостей

t ( J   )  t ( J ), J , J   V ,   .
или, с учетом вида функции таймирования

    1,   .
Поиск вектора таймирования. Пример


V  (i, j )  Z 2 1  i  N , 1  j  N  J max = (N,N)

  (1,0), (0,1), (1, 1)


Условие сохранения зависимостей

1  1,  2  1, 1   2  1.
Оценка времени выполнения алгоритма j

T  max t ( J )  min t ( J )  1    J   J
max min J min = (1,1)
J V J V i
Поиск оптимального вектора таймирования

 
min   J max  J min      1,     
min  1 ( N  1)   2 ( N  1)  1  1,  2  1,  1   2  1
Функция таймирования

 min  (2,1)  t (i, j )  2i  j, (i, j ) V .


Геометрический смысл таймирования
С геометрической точки зрения, таймирование операций алгоритма
функциями вида t ( J )    J – это сечение области вычислений
семейством параллельных гиперплоскостей. Точки, принадлежащие
одной и той же плоскости, соответствуют операциям алгоритма,
которые могут выполняться параллельно.

  N+2 3N
V  (i, j )  Z 1  i  N , 1  j  N
2

7
  (1,0), (0,1), (1, 1)
6
t (i, j )  2i  j, (i, j ) V .
5

j 3

2i+j=k
i
Построение и описание множеств
параллельных операций алгоритма
Множество операций алгоритма, которые можно выполнить одно-
временно, определяется координатами точек области вычислений,
принадлежащих одной и той же секущей плоскости таймирования.


V par (k )  (i, j )  Z 2 2i  j  k , 1  i  N , 1  j  N 
Представление множества параллельных операций в форме,
пригодной для построения программного кода

2i  j  k  j  k  2i  j  k  2i
  
1  i  N  1  i  N  1  i  N
1  j  N 1  k  2i  N (k  N ) / 2  i  (k  1) / 2
  

 
V par (k )  (i, k  2i )  Z 2 max{1, (k  N ) / 2}  i  min{N , (k  1) / 2}
Преобразование к параллельному алгоритму

Исходный алгоритм N+2 3N

7
for I=1 to N do
for j=1 to N do 6

a[i][j] = a[i-1][j]+a[i][j-1]+a[i-1][j+1] 5

j 3

Параллельный алгоритм
i
for k=3 to 3N do
for i=max{1, (k-N)/2} to min{N, k/2} do parallel
a[i][k-2i] = a[i-1][k-2i]+a[i][k-2i-1]+a[i-1][k-2i+1]
Разбиение алгоритма на независимые части
Функции таймирования могут быть использованы для поиска и
выделения в алгоритме независимых ветвей исполнения операций.
В этом случае значение функции таймирования интерпретируется
как номер независимой части алгоритма.

Условие независимых разбиений

t ( J )  t ( I ), J , I V , S ( I )  S ( J ).
Любая пара информационно зависимых операций должна иметь
одно и тоже значение функции таймирования. Для алгоритмов с
однородными зависимостями это условие принимает вид:

t ( J   )  t ( J ), J , J   V ,   .
Или, с учетом функций таймирования вида t ( J )    J ,

    0,   .
Разбиение на независимые части. Пример

for i=1 to N do
for j=1 to N do
a[i][j] = a[i][j]+a[i-1][j-1]


V  (i, j )  Z 2 1  i  N , 1  j  N 
  (1,1) j

Условие независимых разбиений i

1   2  0    (1, 1)

Функция таймирования
t (i , j )  i  j , (i , j )  V .
Преобразование к параллельному алгоритму

Исходный алгоритм
for i=1 to N do
for j=1 to N do
a[i][j] = a[i][j]+a[i-1][j-1]

Множество операций независимой ветви алгоритма

 
V ind (k )  (i, i  k )  Z 2 max{1, k  1}  i  min{ N , k  N }

Параллельный алгоритм
for k=1-N to N-1 do parallel
for i=max{1, k+1} to min{N, k+N} do
a[i][i-k] = a[i][i-k]+a[i-1][i-k-1]

Оценить