Download as pdf or txt
Download as pdf or txt
You are on page 1of 7

Теориический часть

Распараллеливание арифметических выражений

Классификация Флинна

Самая ранняя и наиболее известная классификация архитектур вычислительных систем


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

· SISD.

· SIMD.

· MISD.

· MIMD.

Предложенная схема классификации вплоть до настоящего времени является самой


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

Классификация ВС по типу строения оперативной памяти.

По типу строения оперативной памяти системы разделяются на:

· Системы с общей (разделяемой) памятью;

· Системы с распределенной памятью;

· Системы с физически распределенной, а логически общедоступной памятью


(гибридные системы).

Данный поход к классификации Флинна позволяет различать два важных типа


многопроцессорных систем – мультипроцессоры (системы с общей разделяемой памятью)
и мультикомпьютеры (системы с распределенной памятью).

Основные подходы к распараллеливанию выражений

Распараллеливание - это нахождение параллельного алгоритма решения задачи и


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

Пусть E – простое арифметическое выражение, удовлетворяющее следующему


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

Два выражения E и Ẽ называются эквивалентными (E ~ Ẽ) в том и только в том случае,


если выражение E преобразуется в Ẽ и, наоборот, путем использования конечного числа
раз законов ассоциативности, коммутативности и дистрибутивности.

Более наглядным способом представления графа алгоритма является аппарат ярусно-


параллельной формы (ЯПФ).

Алгоритм в ярусно-параллельной форме представляется в виде ярусов, причем в нулевой


ярус входят операторы (ветви) независящие друг от друга, в первый ярус— операторы,
зависящие только от нулевого яруса, во второй - от первого яруса и т. д. Таким образом
ярусы ЯПФ устанавливают между операторами отношение предшествования - к моменту
начала вычислений на (k+1)-м ярусе должны быть закончены вычисления на k-м ярусе.

Основная цель распараллеливания арифметических выражений – разработать дерево


вычислений (ЯПФ) минимальной высоты. То есть, при условии реализации на каждом
ярусе максимального числа независимых операций, выражение должно вычисляться за
минимально возможное время или за минимальное число шагов.

Рассмотрим, как может меняться высота ЯПФ, а, следовательно, и время решения


задачи, при изменении порядка действий в выражении.

E = (x + (a * ((b / c) * d))) – (y – z)

Рис. 1. ЯПФ исходного выражения Е

Преобразуем Е в эквивалентное:

Ẽ = (a * b) / (c / d) – ((y – z) – x).
Рис. 2. ЯПФ эквивалентного выражения

Характеристики сложности и параллельности

Характеристикой сложности вычисления арифметического выражения является w – общее


число операций выражения.

Будем использовать следующие обозначения:

h – число ярусов (высота) дерева вычислений,

t – время, затрачиваемое на вычисление арифметического выражения,

p – число вычислителей (или процессоров), требуемое для реализации данного вычисления.

Для выражения E Для выражения Ẽ


t=h=5 t=h=3

p=2 p=3

Под степенью параллелизма Dp (средней) арифметического выражения будем понимать


отношение общего числа операций к числу ярусов дерева вычислений.

Пусть Tp – время выполнения параллельного алгоритма на вычислительной системе с


числом процессоров p>1.

T1 – время выполнения “наилучшего” последовательного алгоритма.

Ускорением Sp параллельного алгоритма называют отношение ,

а его эффективность Ep вычисляется по формуле .

Для выражения E Для выражения Ẽ


Dp = w / h = 6/5 = 1.2 Dp = w / h = 6/3 = 2
T1 = w = 6 T1 = w = 6

Tp = t = 5 Tp = t = 3

Sp = T1 / Tp = 6/5 = 1.2 Sp = T1 / Tp = 6/3 = 2

Ep = Sp / p = 1.2/2 = 0.6 Ep = Sp / p = 2/3 = 0.66

Таким образом, выражение Ẽ имеет лучшие характеристики параллельности, чем


выражение Е.

Рис. 3. ЯПФ эквивалентного выражения


с оптимизацией загрузки процессоров

T1 = w = 6 Sp = 6/4 = 1.5

Tp = t = 4 Ep = 1.5/2 = 0.75

Лемма Брента. Если при неограниченном числе процессоров вычисление, состоящее


из w операций, может быть выполнено за время tmin, то при наличии р процессоров оно
может быть выполнено за время

Данное утверждение позволяет, зная характеристики арифметического выражения при


распараллеливании на неограниченном числе процессоров, оценить время реализации
выражения на ограниченном числе вычислителей. Проверим это для полученного на рис.8
дерева при числе операций w = 6 и
tmin = 3.

При наличии двух процессоров (p = 2), время выполнения, в соответствии с леммой,


составит не более t¢ = 3 + (6 – 3)/2 = 4.5.

Задание 1
Варианты заданий
Для своего варианта из перечня арифметических выражений:

1. Постройте дерево параллельного вычисления арифметического выражения.

2. Определите характеристики сложности.

3. Проанализируйте построенную параллельную схему с точки зрения оптимизации


загрузки процессоров и наилучшей эффективности.

4. Определите ускорение и эффективность параллельной схемы для случая оптимальной


загрузки процессоров.

5. Используя программу для распараллеливания арифметического выражения выданную


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

8. Проверьте лемму Брента на применимость к данному выражению, исследовав несколько


параллельных схем вычислений c различным числом процессоров.

Задание 2

Варианты заданий

1. Для своего варианта разработайте последовательный алгоритм решения задачи.

2. Реализуйте алгоритм программно, добавив функцию определения времени выполнения


программы.
3. Протестируйте программу, определив время выполнения при изменении размерности
матриц, результаты занесите в таблицу.

4. Проанализируйте созданный последовательный алгоритм и предложите его


многопоточную реализацию.

5. Протестируйте программу, определив время выполнения при изменении размерности


матриц, результаты занесите в таблицу.

6. Постройте график времени выполнения однопоточного и многопоточного приложений.

10. Аналогично реализуйте параллельное вычисление арифметического выражения,


добавив график времени выполнения этой версии программы на график, построенный в
п.6.

11. Проанализируйте полученные результаты.

You might also like