- •Параллелизм. Зависимости. Граф зависимостей алгоритма (программы).
- •1. Гранулированность параллелизма
- •На уровне программы.
- •На уровне аппаратуры
- •При параллельном программировании на языках высокого уровня обычно учитывается среднезернистый параллелизм и параллелизм
- •2. Классические виды зависимостей между операторами программы
- •1. Зависимости по данным
- •1.Зависимости OUT-OUT, IN-OUT, связаны с экономией памяти и являются в некотором смысле избыточными
- •Определение зависимости сводится к проверке соотношения
- •Зависимость по данным между
- •Если имеется m-мерный массив А и индексные выражения массива линейны, то тогда система
- •Проблемы.
- •Параллельная ярусная схема (параллельная схема программы).
- ••Ранжирование графа. Размещение операторов на ярусах. На одном ярусе находятся операторы, между которыми
- •Метрики для параллельных программ.
- •Пусть время счета задачи на каждом i-ом процессоре состоит из времени, затраченного на
Зависимость по данным между
операторами S1 и S2 имеется тогда и только тогда,
когда существуют целые i1, i2, . . . , i r и j1, j2, . . . , j r , такие что
h1(i1, i2, . . . , i r) = g1(j1, j2, . . . , j r), |
|
h2(i1, i2, . . . , i r) = g2(j1, j2, . . . , j r), |
(1) |
. . . |
|
hd(i1, i2, . . . , i r) = gd(j1, j2, . . . , j r) |
|
и |
|
ip, jp in [Lp,Up], |
(2) |
где p = 1, . . . , r. |
|
Следовательно, проблема зависимости данным представляет собой задачу целочисленного программирования.
Если имеется m-мерный массив А и индексные выражения массива линейны, то тогда система (1) может быть записана в следующем виде:
a11 * х1 + a12 * х2+…+ a1n * хn+c1 =0 |
|
a21 * х1 + a22 * х2+…+ a2n * хn+c2 =0 |
|
………..… |
(3) |
am1 * х1 + am2 * х2+…+ amn * хn+cm =0 |
|
и |
|
Li ≤ xi ≤ Ui , где i =1 ,…, n |
(4) |
Скорость решения и точность решения. Приближенные тесты . Тест Банержи. Для каждого уравнения
a1*х1 + a2*х2+…+ an*хn= a0
отдельно выполняется проверка следующих соотношений :
Пусть a — целое число. Определим: a+ = a, если a ≥ 0, иначе 0; a- = –a, если a ≤ 0, иначе 0.
n |
n |
low (ai Li ai Ui ) |
high (ai Ui ai Li ) |
i 1 |
i 1 |
По теореме о промежуточном значении уравнение зависимости имеет вещественное решение внутри границ цикла тогда и только тогда, когда
low ≤ a0 ≤ high.
Проблемы.
1.Точность определения зависимости. В общем случае – неразрешимая проблема. Поэтому зависимость определяется с избытком (управление пойдет по всем путям, индексы захватят всю область в случае сложного индексного выражения и т.п).
2.Сложность (время) определения зависимости.
3.Уровень гранулированности. Что такое оператор в представлении (*). Иерархия зависимостей.
Параллельная ярусная схема (параллельная схема программы).
На ярусе действия – параллельно и независимо, Переход от яруса к ярусу - последовательный
•Ранжирование графа. Размещение операторов на ярусах. На одном ярусе находятся операторы, между которыми нет зависимостей, операторы одного яруса могут выполняться одновременно и независимо. Переход от яруса к ярусу – последовательно.
•Ширина и высота ранжированного графа (обычно для операций) – максимальный параллелизм задачи и минимальное число шагов (при наличии достаточного количества исполнителей).
•Неединственность ранжированного графа. Стратегия максимального параллелизма (считать все что можно, построение от ввода данных) и необходимого параллелизма (считать то что нужно, построение от вывода, побочный эффект – обнаружение излишних вычислений).
•Если граф строится по математическим соотношениям, то он представляет естественный (идеальный, “неиспорченыый ”) параллелизм задачи.
Если строится в результате анализа последовательный программы – то это “извлеченный параллелизм”, могут быть потери по сравнению с идеальным графом.
Идея непроцедурного описания алгоритма.
Граф информационных зависимостей строится, в приближениях разрешимости, в системах автоматизации распараллеливания. Обычно построение такого графа целиком при разработке программы не нужно, однако необходимо уметь отвечать на вопросы, в частности о зависимостях.
Обычно прикладной специалист, разрабатывающий численный метод, знает ответы на вопросы о зависимостях.
Метрики для параллельных программ.
1. Ускорение.
S( p) T1 Tp
Закон Амдала.
S( p) |
|
|
T1 |
|
S( p) |
|
1 |
|
1 a |
Tcom |
a |
1 a |
|||
|
a |
p |
T1 |
|
p |
||
|
|
|
|
|
|
||
2. Эффективность распараллеливания.
T1 |
|
E( p ) Tp * p |
* 100%. |
Для определения, как влияют затраты, связанные с поддержкой распараллеливания, на общее время исполнения параллельной программы
Суперлинейное ускорение S(p) >1, эффективность >100%. T1 может быть неизвестно
Пусть время счета задачи на каждом i-ом процессоре состоит из времени, затраченного на передачу данных между процессорами 
и времени, затрачиваемого на вычисление Truni
p |
- суммарное время по всем процессорам, |
Tcom p i 1 Tcomi |
затраченное только на передачу информации |
Trun p ip 1 Truni |
- суммарное время по всем процессорам, |
|
затраченное только на вычисления |
|
|
Trun ( p ) |
|
|
|
|
|
Tcom ( p ) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
E( p ) T |
( p ) T |
( p ) 100% |
1 |
T |
( p ) T |
|
100% |
||||
|
( p ) |
||||||||||
|
run |
com |
|
|
|
|
run |
com |
|
|
|
Показывает, как сильно влияют на общее время исполнения программы накладные расходы, связанные с передачей данных между процессорами
