Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
_Лекции_Теория вычислительных процессов.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
638.46 Кб
Скачать

12 Лекция №11

ПАРАЛЛЕЛЬНЫЕ ВЫЧИСЛЕНИЯ

12.1 Ключевые (основные) вопросы (моменты)

— понятие о параллельных вычислениях;

— принципы организации параллельных вычислений

12.2 Текст лекции

12.2.1 Принципы организации параллельныхвычислений

Рассмотрим вопросы, связанные с реализацией параллелизма при вычислении арифметических выражений с использованием обратной польской записи (рис.6.6). Пусть требуется вычислить выражение

((a + b x c / d) / e + (f x g h) / (( i j) x k)) x l ,

представленное в форме обратной польской записи:

a b c x d / + e / f g x hi jk x / + l x .

b

c

f

g

i

j

mul2

d

sub2

h

mul1

k

a

div1

sub1

mul3

e

add1

div3

div2

l

add2

mul4

Рис.6.6

Одинаковые операторы обратной польской записи последовательно нумеруются слева направо (mul 1, mul 2,…), после чего находятся независимые последовательные цепи вычислений. Для выделения независимых цепей вычислений к крайнему левому оператору присоединяются последующие операнды и операторы, до тех пор, пока не встретятся два операнда подряд. Данные операнды будут являться началом следующей последовательной цепочки. Так, в рассматриваемом примере независимых цепочки три:

1) a b c x d / + e /

mul1 div1 add1 div2

2) f g x h

mul2 sub1

3) i j k x / + l x .

sub2 mul3 div3 add2 mul4

Для определения связей между ними во всех цепочках, кроме первой, отмечаются операторы, непосредственно перед которыми расположены другие операторы. Конечный оператор первой цепи связывается с последним отмеченным оператором, конечный оператор второй цепи – с предпоследним отмеченным оператором и т.д.:

a b c x d / + e / f g x hi jk x / + l x .

└──────────┘

Таким образом, имеем параллельное дерево, соответствующее графу рис.6.6. Полученные связи между операторами вводятся в память следования операторов (ПСО) в виде списка следования операторов (рис.6.7).

mul1 div1 sub1 div3

div1 add1 div3 add2

add1div2 sub2 mul3

div2 add2 mul3 div3

mul2 sub1 add2mul4

Рис.6.7

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

add1 mul1 mul1 div1 div2 mul2 mul2 sub1 sub2 sub2 mul3 mul4

a b c x d / + e / f g x h i j k x / + l .

mul1 div1 add1 div2 mul2 sub1 sub2 mul3 div3 add2 mul4

Для реализации параллелизма необходимо наличие нескольких операционных устройств, выполняющих одну из арифметических операций и использующих ассоциативную память для хранения исходных операндов и промежуточных результатов. Задачей операционных устройств является определение наличия в ассоциативной памяти двух операторов с одинаковыми ассоциативными признаками и выполнения соответствующей операции. Ассоциативными признаками являются порядковые номера следования соответствующих операторов. Операнды, имеющие ассоциативный признак определенной арифметической операции, хранятся в местной ассоциативной памяти (МАП), которая является общей для всех выполняющих данную операцию операционных устройств.

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

ОУ АП

Ассоциативный

признак

Операнд

МАП

умножения

mul1

mul1

mul2

mul2

mul3

mul4

b

c

f

g

k

l

МАП

деления

div1

div2

d

e

МАП

сложения

add1

a

МАП

вычитания

sub1

sub2

sub2

h

i

j


Рис.6.8.

В заключение первой части учебного пособия рассмотрим пример линейной рекурсии для вычисления суммы арифметического выражения (((a+b)+c)+d). Информационный граф данного алгоритма, в котором каждый из операндов используется однократно, а результаты предшествующего суммирования являются исходными данными для последующего, представляется в виде бинарного дерева (рис.6.9). Рекурсивный характер вычислений накладывает ограничения на возможности распараллеливания, поэтому для ускорения получения суммы необходима реорганизация последовательности обработки.

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

Минимальное число индексов, которым можно отметить все вершины графа, будет на единицу больше длины его критического пути. Вершины с одинаковыми индексами не связаны между собой и образуют группу, называемую ярусом параллельной формы графа алгоритма. Ширина яруса, равная количеству вершин в группе, показывает число операций, которые могут быть выполнены одновременно.

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

Вернемся к нашему примеру и уменьшим высоту дерева h=3 до высоты двух ярусов (рис.6.11) путем преобразования данного выражения к виду (a+b)+(c+d). Такой метод нахождения суммы получил название метода сдваивания или метода нахождения параллельных каскадных сумм.

Очевидным образом подобные преобразования распространяются на случай произвольного числа слагаемых L и, в общем случае, высота параллельной формы будет равна ]log2L[.

Можно строить алгоритмы логарифмической высоты не только для операции сложения чисел, но и для любой ассоциативной операции. Для арифметического выражения с L переменными уменьшение высоты дерева позволяет достигнуть ускорения порядка O(L/log2L) при использовании O(L) функциональных устройств. Максимальное ускорение достигается при числе функциональных элементов не менее N=L/2, причем полностью все N=L/2 элементов загружены только на первом шаге вычислений, а на последнем шаге используется лишь одно устройство.

Н е используемые на каждом шаге функциональные устройства можно отразить на информационном графе в виде пустых операторов, которые представляются вершинами, не имеющими входных и выходных дуг (рис.6.12). Эффективность алгоритма оценивается как отношение числа действительных к общему числу действительных и пустых операторов, что для рассмотренного примера составляет 1/2 и не зависит от L.

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

Система остаточных классов (СОК), в которой переносы между разрядами числа отсутствуют, дает возможность независимой параллельной обработки каждого разряда. Разрядно-параллельная обработка в СОК особенно эффективна при выполнении мультипликативных операций, для ускорения выполнения которых в системах, основанных на позиционной системе счисления, приходится применять методы с использованием итеративных или матричных структур.