УДК 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
или
(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