Московский государственный университет путей сообщения
Опубликован: 22.12.2006 | Доступ: свободный | Студентов: 2440 / 570 | Оценка: 4.07 / 4.02 | Длительность: 16:07:00
ISBN: 978-5-9556-0071-0
Специальности: Разработчик аппаратуры
Лекция 12:

SPMD-технология на базе симметричной ВС

< Лекция 11 || Лекция 12: 12345 || Лекция 13 >

Распараллеливание по опорному одномерному массиву

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

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

Пусть заданы R комплексных чисел Xr = Xr(1) + iXr(2), r = 0,...,R-1. Они преобразуются в R комплексных чисел

\begin{gathered}
A_r  = \sum\limits_{k = 0}^{R - 1} {X_k \exp \left( { - \frac{{2\pi irk}}
{R}} \right) = A_r^{(1)}  + iA_r^{(2)} }  =  \\
= \sum\limits_{k = 0}^{R - 1} X_k^{(1)} \cos \left( { - \frac{{2\pi rk}}
{R}} \right) + i\sum\limits_{k = 0}^{R - 1} {X_k^{(1)} \sin } \left( { -
\frac{{2\pi rk}}
{R}} \right),
\end{gathered}
где Ar(1) и Ar(2)коэффициенты Фурье.

Заданные коэффициенты и коэффициенты Фурье находятся в ОПД по адресам x и a:

x) X0(1), X0(2), X1(1), X1(2),..., XR-1(1), XR-1(2) ;

a) A0(1), A0(2), A1(1), A1(2),..., AR-1(1), AR-1(2).

Организуем параллельный процесс на основе динамического распределения рассчитываемых коэффициентов Фурье между процессорами. В этом случае будем считать распределяемый массив {Aj(1), Aj(2)}, j = 0,...,R-1, состоящий из пар коэффициентов Фурье, опорным.

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

DX = {DX0, DX1, DX2, DX3, DX4} = {x, 2, R, x+2R-2, x},

DA = {DA0, DA1, DA2, DA3, DA4, DA5, DA6, DA7} =

= {a, 2, R, a+2R-2, a, a+2i, 2N, a+2i}

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

В табл. 12.2 представлена программа счета. Пропущены некоторые команды начального формирования дескрипторных элементов, в том числе команды, соответствующие операции (DA5) := (DA0)+i(DA1).

Таблица 12.2.
k КОП I1 A1 I2 A2 I3 A3
0 ЗАГ <r> <i> DA7 DA5
1 ПРАД DA7 020
2 x <r> -2 \pi /R \alpha
3 ЗАГ <k> l1 l2
4 ЗАГ DX4 DX0
5 ЦИКЛ DA2
6 x <k> \alpha \beta
7 COS
8 x DX4
9 + l1 l1
10 М+ \beta
11 x DX4 0001
12 + l2 l2
13 М+ <k> 0001 DX4 DX1
14 КЦ
15 ЗАП l1 DA7
16 ЗАП l2 DA7 0001
17 ИЗМАД DA7 020
18 М+ <r> <N>
19 БП 002
20 В

Команды 0-4 встречались ранее. Предполагаем, что для формирования значений r, k, l1, l2 в ПП i достаточно пользоваться операцией загрузки, применяемой для формирования модификаторов и дескрипторных элементов. При этом первоначально r присваивается значение номера процессора. При переводе в вещественные они сохраняют фактические значения.

Процессор i приступает к счету Ai, если при выполнении команды1 ( DA7 ) не превосходит ( DA3 ).

По команде 5 (ЦИКЛ) формируется цикл на ( DA2) = R повторений.

По командам 6-12 формируются очередные слагаемые накапливаемых в l1 и l2 значений Ar(1) и Ar(2). Предполагаем, что если в команде не указан адрес операнда, то операндом является содержимое сумматора.

По команде 13 увеличивается значение k и значение дескрипторного элемента DX4 для перехода к счету следующих слагаемых, образующих Ar(1) и Ar(2).

По команде 14 Конец Цикла изменяется значение счетчика цикла, и если оно не превышает значение, указанное в команде ЦИКЛ, управление передается на повторное выполнение рабочей части цикла.

По командам 15 и 16 найденные значения Ar(1) и Ar(2) записываются в память.

По команде 17 выполняется операция (DA7) := (DA7)+(DA6). Если после этого (DA7) > (DA3), управление передается на выход из процедуры. В противном случае, по команде 18 значение r увеличивается на N в соответствии с распределением рассчитываемых значений Ar между процессорами.

По команде 19 осуществляется переход на счет нового значения Ar.

< Лекция 11 || Лекция 12: 12345 || Лекция 13 >