Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции / lecture-8.ppt
Скачиваний:
1
Добавлен:
11.06.2024
Размер:
207.36 Кб
Скачать

Параллелизм. Зависимости. Граф зависимостей алгоритма (программы).

Некоторые метрики параллелизма.

О времени коммуникаций в системах с распределенной памятью

1. Гранулированность параллелизма

Размер гранулы (порции вычислений, вычислительный квант) – количество операций

Крупнозернистый параллелизм (а) Мелкозернистый параллелизм (b) Среднезернистый параллелизм (с)

На уровне программы.

Мелкозернистый параллелизм Среднезернистый параллелизм

Операнды выражения

Операторы программы

((a*b +c)*b + g/(e-f) )*h

x= sin(a+b)

y= a**2+b**2

 

IF(x>y) THEN CALL F(x)

ELSE CALL G(y) ENDIF

Крупнозернистый параллелизм Параллелизм задач (программ, многих операторов)

n одинаковых вычислений над различными параметрами. Метод Монте-Карло. Многообластные методы.

На уровне аппаратуры

Мелкозернистый параллелизм

Микропроцессорный параллелизм, параллелизм внутри 1 процессора. (несколько функциональных устройств, несколько конвейеров,

несколько команд VLIW)

На этом уровне возможна такая же классификация по уровням параллелизма

Среднезернистый параллелизм

Многопроцессорные системы (с распределенной памятью, с общей памятью)

Крупнозернистый параллелизм

Многопроцессорные системы, ГРИД-системы (кластеры

многопроцессорных систем).

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

Мелкозернистый – чаще при построении оценок, теоретических исследований, либо в компиляторах, при отображении на мелкозернистый параллелизм аппаратуры.

2. Классические виды зависимостей между операторами программы

1. Зависимость по управлению (CONTROL)

Оператор S2 непосредственно зависит от S1 по управлению, если S2 выполняется непосредственно после S1.

Оператор S1 зависит от S2 по управлению, если существует цепочка S1, Si,…,Sj,S2, в которой каждая пара (S1, Si),…,(Sj,S2) непосредственно зависит по управлению.

S1 S1

S2 S2

1. Зависимости по данным

1.1.OUT-IN (TRUE, истинная, DATA-FLOW)

Значение вычисляется, затем используется. S1: x =…

S2: …= … x …

Оператор S2 зависит от S1 (при наличии зависимости по управлению S2 от S1)

1.2.IN-OUT (ANTI)

Значение используется, затем (пере)вычисляется. S1: …= … x…

S2: x =…

Оператор S2 зависит от S1 (при наличии зависимости по управлению S2 от S1)

1.3. OUT-OUT (OUTPUT, по выходу)

Значение вычисляется, затем перевычисляется. S1: x =…

S2: x =…

Оператор S2 зависит от S1 (при наличии зависимости по управлению S2 от S1)

1.4. IN-IN (INPUT, по входу)

Значение используется в обоих операторах. S1: …= x

S2: …= x

Оператор S2 зависит от S1 (при наличии зависимости по управлению S2 от S1)

1.Зависимости OUT-OUT, IN-OUT, связаны с экономией памяти и являются в некотором смысле избыточными и могут быть устранены введением дополнительных переменных.

2.Зависимость IN-IN с точки зрения распараллеливания особого интереса не представляет.

3.Основной тип зависимости, которую необходимо знать при построении параллельной программы - OUT-IN

Другие типы зависимостей.

Зависимости по удаленным данным (модель распараллеливания по данным).

Зависимости для алгоритма (“естественный параллелизм”, без учета

управления, непроцедурность).

Статический и динамический анализ зависимостей.

i j
X ,Y
I
2. Граф информационных зависимостей
Граф информационных зависимостей G =(V,E),
V – вершины (операторы), E – дуги (зависимости)
Data Dependency Graph (DDG). Граф программы, граф алгоритма, статический, динамический…
Оператор представим в виде:

Di Si

1

n

1

m

X D1

,..., X Dn

...Y S1

,...,Y Sm (*)

- переменные, входящие в оператор (в общем случае могут совпадать)

- множества индексов индексного пространства I, (области вычисления)

I - множества индексов индексного пространства I, (области использования) Чтобы построить области вычисления и использования, нужен анализ:

1)областей описания переменных,

2)областей операторов, в которые входит рассматриваемый оператор (например, циклов)

3)индексных выражений (для индексов вида ai+b области обычно строятся)

Определение зависимости сводится к проверке соотношения

Di D j

(возможно с учетом управления).

Строить пересечение, вообще говоря, не надо, достаточно определить или опровергнуть факт пересечения.

Зависимости в циклах между витками. Задача линейного программирования.

Пусть в гнезде из r вложенных DO-циклов, операторы S1 и S2 обращаются

кd - мерному массиву A, индексные выражения которого представлены линейными функциями hq(i1, i2, ... , ir) и gq(i1, i2, . . . , ir), где q = 1, . . . , d.

DO i1 = …

DO ir = …

A ( …,hq(i1, i2, ... , ir),…) = …

= … A ( …,gq(i1, i2, ... , ir),…)

Соседние файлы в папке Лекции