Научная статья на тему 'Распараллеливание рекуррентных циклов с нерегулярным вычислением суперпозиций'

Распараллеливание рекуррентных циклов с нерегулярным вычислением суперпозиций Текст научной статьи по специальности «Математика»

CC BY
121
22
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ПАРАЛЛЕЛЬНЫЕ ВЫЧИСЛЕНИЯ / РЕКУРРЕНТНЫЕ ЦИКЛЫ / PARALLEL COMPUTATIONS / RECURRENT LOOPS

Аннотация научной статьи по математике, автор научной работы — Штейнберг Олег Борисович

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

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

The Parallelizing of Recurrent Loops with Using of Non-regular Superpositions Computations

It is discuses the new algorithm of recurrent loops parallelizing with using of non-regular superpositions computations in this article. This algorithm more effective than other well-known methods.

Текст научной работы на тему «Распараллеливание рекуррентных циклов с нерегулярным вычислением суперпозиций»

УДК 681.124.2

РАСПАРАЛЛЕЛИВАНИЕ РЕКУРРЕНТНЫХ ЦИКЛОВ С НЕРЕГУЛЯРНЫМ ВЫЧИСЛЕНИЕМ СУПЕРПОЗИЦИЙ

© 2009 г. О.Б. Штейнберг

Южный федеральный университет, Southern Federal University,

344090, Ростов н/Д, ул. Мильчакова, 8а, 344090, Rostov-on-Don, Milchakov St., 8a,

dnjme@math. sfedu.ru dnjme@math. sfedu.ru

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

Ключевые слова: параллельные вычисления, рекуррентные циклы.

It is discuses the new algorithm of recurrent loops parallelizing with using of non-regular superpositions computations in this article. This algorithm more effective than other well-known methods.

Keywords: parallel computations, recurrent loops.

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

По описываемому в данной работе алгоритму разрабатывается программная реализация, которая войдет в проект «Открытая распараллеливающая система» ^С) [3].

Постановка задачи

Рассмотрим программный цикл:

DO 99 i=1, N (1)

99 X(i)=G1(X(i-1)), где X1 - элементы массива, которые нужно вычислить

^=1, 2, 3...№); G1 - тело цикла; G1 - семейство отображений из множества элементов массива в себя; N -количество элементов X1.

В работе используются обозначения, характеризующие временные показатели: T - время исполнения цикла (1); Tf - время, за которое вычисляется X1=G1(X(i-1)); Ts - время выполнения суперпозиции двух произвольных отображений G1 и Gk.

Будем считать, что Tf - константа и, следовательно, не зависит от 1 и от X. Промежуток времени, равный Tf, назовем шагом алгоритма. Не умаляя общности, будем считать Tf=1.

Количество вычислительных устройств (ВУ) обозначим через P, и будем считать, что P=2n

В данной работе развивается метод, описанный в [1] для P=2, на случай P=2n

Задача состоит в вычислении за минимальное время N элементов массива Xi по формуле Xi=Gi(Xi-1), при условии, что имеется P ВУ.

Таким образом, начальные данные: N P, Tf, Ts, Gi и X0, искомые: Xi (1=1,2,3.. .№) и минимальное T.

Идея решения задачи

Очевидно, если P=1, то T=N*Tf.

Будем считать, что P>l. Тогда время вычислений можно уменьшить за счет вычисления суперпозиций GioGi+1. Действительно, без дополнительных преобразований цикла (1) нельзя вычислить Xi, не зная Xi-1. Следовательно, несколько ВУ не смогут одновременно работать, если не сделать каких-нибудь дополнительных вычислений. Как раз такими и являются вычисления суперпозиций. Из примера 1 будет видно, что суперпозиция может уменьшить количество шагов, необходимых для вычисления всех Xi.

Пример 1. Пусть P=2, N=4, Ts=2. За время, потраченное одним ВУ на вычисление X1 и X2, второе успеет выполнить суперпозицию G4oG3. Далее одновременно вычисляем X3=G3(X2) и X4=(G4oG3)(X2). Итого T=3. Заметим, что если бы задача решалась последовательно, на ее решение ушло бы 4 шага (Т=4).

Работу алгоритма на данном примере можно записать в виде таблицы.

ВУ Шаг

1 2 3

1 Xi=Gi(Xo) X2=G2(X1) X3=G3(X2)

2 G40G3 G40G3 X4=(G4oG3)(X2)

Алгоритм распараллеливания рекуррентных циклов с нерегулярным вычислением суперпозиций

Алгоритм заключается в последовательном выполнении п шагов при условии, что вычисление ведут P=2n процессора, для фиксированного п:

Шаг 1. Одно ВУ считает значения элементов Xi, а в это время остальные ВУ вычисляют суперпозиции.

Шаг 2. Второе ВУ переключается с вычисления суперпозиций на вычисление значений элементов Xi. Теперь их вычисляют два ВУ, а остальные ВУ - суперпозиции суперпозиций, вычисленных на предыдущем шаге.

Шаг п-1. Первая половина ВУ вычисляет значения элементов Xi, вторая - суперпозиции суперпозиций, вычисленных на предыдущем шаге.

Шаг п. Все ВУ вычисляют значения элементов Xi.

Рассмотрим алгоритм более подробно при различных значениях количества ВУ.

Пусть P=1, тогда цикл, реализующий работу алгоритма, имеет вид

99

77

DO 99 i=1,N X(i)=GI(X(i-1)),

P=2:

DO 77 i=1,M1 X(i)=GI(X(i-1)) DO 88 I=MbN

G1,1_i=G1oG1_i

(2)

(2" -l)Tf + Ts -(2~ -2)7/ 0

0 0

0

(2" -2)77 +27s

DO 99 i=M1,N-1,2

X(i)=Gi,i-l(X(i-2)) (3)

99 X(i+1)=Gi+l,i(X(i-1)).

Здесь используется пока не определенная константа M1. По условиям алгоритма 1-й и 2-й циклы шага (1) вычисляются одновременно. Следовательно, можно получить уравнение, левая часть которого - из первого цикла, правая - из второго: M1Tf=Ts(N-M1). Из этого уравнения можно найти M1.

Пусть P=4, тогда циклы, реализующие работу алгоритма, имеют вид DO 11 1=1, M1

11 X(i)=Gi(X(i-1)) DO 22 i=M1, N-2, 3 G1,1-1=G1oG1-1 G1+l,1=G1+loG1

22 Gl+2,l+l=Gl+2oGl+l DO 33 i=M1, M2-1, 2 X(i)=Gl,l-l(X(i-2))

33 X(i+1)=Gl+l,l(X(i-1)) DO 44 i=M2, N-1, 2

44 Gl+l,l-2=Gl+l,lOGl-l,l-2 DO 55 1=М2, N-3, 4 X(i)=Gl,l-3(X(i-4)) X(i+1)=Gl+l,l-2(X(i-3)) X(i+2)=Gl+2,l-l(X(i-2))

55 X(i+3)=Gl+з,l(X(i-1)).

Из фрагментов (2) и (3) можно получить систему двух уравнений относительно неизвестных М1 и М2:

ЦМ2-М1)Т#2=(№М2ДО2.

Её матрица является нижнетреугольной и имеет

2 N * Ts

вид

f3T/+Ts 0 - 2Tf 2Tf+ 2Ts

Выпишем все получившиеся матрицы, включая матрицу общего случая (т.е. когда Р=2П). Р=2: +

P=4:

P=8:

Р=16:

3Tf + Ts -2 Tf

ITf+Ts -6Tf 0

0

2Tf + 2Ts 0

6Tf + 2Ts -4Tf

N * Ts 2 N * Ts

0 0

4Tf + 4Ts

N * Ts 2N * Ts 4N * Ts

\

\5Tf+Ts -14Tf 0 0

V

P=2n:

0 о

_(2"_22)7/ (2" -22)Tf + 22TS

0

14Tf + 2Ts -12Tf 0

0 0

12Tf + 4Ts -8Tf

0 0 0

8Tf + 8Ts

N *Ts 2N * Ts 4N * Ts 8N * Ts

(2" -2"-2)Tf + 2"-2 -(2'

Ts

-2"-l)Tf

(2"-2"

0

l)Tf + 2"

N*Ts 2 N*Ts 4 N*Ts

2"-2n*Ts 2 "~1N*Ts

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

или

(2й -1 )Tf + Ts -(2вЧ -1)Г/

(2 -(2'

О

-1 )Tf + Ts

~2-w

0 0

0 о

(2"~2 -1 )Tf + Ts

0 0 0

(22 -1)77 +Ts -(2-1)77

Решая эту СЛАУ, можно найти все М1, т.е. получить все необходимые параметры для записи циклов, используемых в алгоритме.

С применением данного алгоритма вычисления происходят быстрее, чем непосредственно через рекурсию. Действительно, если применяется последовательный алгоритм, то время вычисления равно N*Tf (К элементов Х1, каждый из которых находится за время Т:1). При использовании же описанного алгоритма одно из ВУ все время считает значения Х1 от момента начала работы алгоритма и до конечного момента. Обозначим через М количество X1, которые это ВУ вычислит за время работы алгоритма. Заметим, что М=М! +M2+.. ,+Мп.

Таким образом, время работы алгоритма - M*Tf. Но М < К, так как уже на 2-м шаге алгоритма второе ВУ начинает вычисления элементов Х1. Следовательно, первое вычисляет не все N штук Х1, значит К>М, т.е.

0 0 0

О

(2 -1)77 + Ts

N*Ts N*Ts N*Ts

N*Ts N*Ts

№Т£>М*Т£ Это означает, что с помощью данного алгоритма вычисления проходят быстрее, чем с помощью последовательного.

Область действия алгоритма

В [2] описано множество отображений G1, для которых изложенный метод может быть эффективен. В качестве примеров можно рассмотреть дробно-линейную

функцию Xt =

4 *Xj-x +в, Ci*Xi_1+Di

или векторную рекур-

рентную зависимость

ГХ = А

, , * Xi_1 + Bj *Yi_1 + Ci Yt=A\*Xj_1 + B j *Yj_1 + C j .

Литература

1. Штейнберг Б.Я. Математические методы распараллеливания рекуррентных циклов для суперкомпьютеров с параллельной памятью. Ростов н/Д, 2004. 192 с.

2. Штейнберг Б.Я. Распараллеливание рекуррентных циклов с условными операторами // Автоматика и телемеханика. 1995. № 6. С. 176-184.

3. URL: http://www.ops.rsu.ru (дата обращения 11.02.2008).

Поступила в редакцию

22 февраля 2008 г.

0

i Надоели баннеры? Вы всегда можете отключить рекламу.