Скачать презентацию Лекция 4 Основные подходы к распараллеливанию программ 1 Скачать презентацию Лекция 4 Основные подходы к распараллеливанию программ 1

Лекция 4 распаралл 19-03-13.ppt

  • Количество слайдов: 81

Лекция 4 Основные подходы к распараллеливанию программ 1 Лекция 4 Основные подходы к распараллеливанию программ 1

Распараллеливание ациклических участков программы (алгоритма) Алгоритм распараллеливания ациклических участков программы обычно состоит из четырех Распараллеливание ациклических участков программы (алгоритма) Алгоритм распараллеливания ациклических участков программы обычно состоит из четырех этапов: 1)построение графа зависимостей по данным между операторами программы; 2)построение той или иной формы параллельной программы: яруснопараллельной формы (ЯПФ), формы параллельных ветвей или полностью асинхронного параллелизма; 3)составление параллельной программы в той или иной форме; 4)выполнение полученной программы в используемой параллельной вычислительной системе. Автоматизация процесса. Параллельный транслятор. 2

Построение графа зависимостей Граф зависимостей (по данным) между операторами программы (Data Dependence Graph, DDG) Построение графа зависимостей Граф зависимостей (по данным) между операторами программы (Data Dependence Graph, DDG) строится на основе информационной и логической зависимостей между операторами программы. Заметим, что о зависимости по данным можно говорить на разных уровнях — от отдельных инструкций, до более крупных программных блоков. Информационная зависимость (непосредственная) между операторами программы Оператор В зависит от оператора A информационно, если оператор А "вырабатывает" некоторую переменную Х, которую использует оператор В. Другими словами, оператор В зависит от оператора А информационно, если 1)существует путь от входного оператора программы, проходящий через операторы А, В, и 2)оператор А является последним перед В оператором этого пути, "вырабатывающим" значение переменной Х, которое используется оператором В. Формально информационную зависимость оператора В от оператора А можно записать в следующем виде: где In(B)— совокупность входных переменных оператора, Out(A) — совокупность выходных переменных оператора A, Ø – пустое множество. 3

4 4

Зависимости по данным Информационные зависимости: 1)1: a = 1; 2: b = a; 2)1: Зависимости по данным Информационные зависимости: 1)1: a = 1; 2: b = a; 2)1: b = a; 2: a = 1; 3)1: a = 1; 2: a = b; 1 2 Зависимость по управлению: 1 1: 2: 3: 4: 2 if(a) { x = c + d; y = 1; } 3 5

Виды задач распараллеливания программ • 1. Распараллеливание ациклических (последовательных) участков программ (алгоритмов). • 2. Виды задач распараллеливания программ • 1. Распараллеливание ациклических (последовательных) участков программ (алгоритмов). • 2. Распараллеливание выражений. • 3. Распараллеливание циклических участков программ (алгоритмов) 6

Распараллеливание ациклических программ Пример 1. Рассмотрим следующую задачу. Пользователь вводит относительные адреса x, y Распараллеливание ациклических программ Пример 1. Рассмотрим следующую задачу. Пользователь вводит относительные адреса x, y начала и конца массива. Известно, что переменная, имеющее наибольшее значение соответствует концу массива, а переменная, имеющая наименьшее значение, – началу массива. Требуется распечатать массив, а также нижнюю и верхнюю его границы. Рассмотрим также следующую программу, которая решает поставленную задачу (слева даны обозначения операторов программы; c – база массива): A ввод (x, y); B l : = x; C h : = y; D v : = c+x; E z : = c+y; P если x>y то F иначе G; F h : = x; l : = y; G печать от min (z, v) до max (z, v); H печать (l, h); 7

Граф зависимостей для примера 1 Рисунок 5. 1 - Граф зависимостей программы для примера Граф зависимостей для примера 1 Рисунок 5. 1 - Граф зависимостей программы для примера 1 8

Распараллеливание ациклических программ (продолжение) Большой размер графа усложняет последующие этапы распараллеливания программы. Для уменьшения Распараллеливание ациклических программ (продолжение) Большой размер графа усложняет последующие этапы распараллеливания программы. Для уменьшения размера графа целесообразно произвести сжатие линейных участков программы в обобщенные операторы, т. е. выделить в исходном графе линейные подграфы и поставить в соответствие каждому из них одну обобщенную вершину графа. Сохраним за преобразованным графом обозначение. Таким образом, вершинами графа являются операторы исходной программы, а также фрагменты исходной программы в виде линейных участков. 9

Построение ярусно-параллельной формы программы Алгоритм построения ярусно-параллельной формы программы: 1. На первый ярус ЯПФ Построение ярусно-параллельной формы программы Алгоритм построения ярусно-параллельной формы программы: 1. На первый ярус ЯПФ заносятся все операторы, в которые не идут стрелки графа зависимостей G; 2. Если построено k ярусов, то в (k+1)-й ярус заносятся все те операторы, которые имеют входящие стрелки только от первых k ярусов. ЯПФ для примера 1 Построим ЯПФ для программы, граф зависимостей которой приведен на рисунке 1. Входящие стрелки отсутствуют только у оператора А. Поэтому на первый ярус ЯПФ помещаем только этот оператор. Входящие стрелки только от операторов 1 -го яруса имеют операторы В, C, D, E, F. Поэтому помещаем их на второй ярус. Входящие стрелки только от операторов 1 -го и 2 -го ярусов имеют операторы F, G. Помещаем их на третий ярус. Наконец, входящие стрелки только от операторов 1 -го, 2 -го и 3 -го ярусов имеет только оператор H. Помещаем этот оператор на четвертый ярус (см. рисунок 2) 10

ЯПФ для примера 1 Рисунок 2 - Ярусно-параллельная форма для программы, граф зависимостей которой ЯПФ для примера 1 Рисунок 2 - Ярусно-параллельная форма для программы, граф зависимостей которой приведен на рисунке 1. 11

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

13 13

14 14

15 15

16 16

17 17

18 18

19 19

20 20

Пример 1 do 1 i = 1, N-1 do 1 j = 1, M-1 Пример 1 do 1 i = 1, N-1 do 1 j = 1, M-1 a(i, j) = a(i-1, j) + a(i, j) 21

22 22

23 23

24 24

Пример 1 do 1 i = 1, N-1 do 1 j = 1, M-1 Пример 1 do 1 i = 1, N-1 do 1 j = 1, M-1 a(i, j) = a(i-1, j) + a(i, j-1) 25

26 26

27 27

28 28

29 29

30 30

Топологии сетей передачи данных 31 Топологии сетей передачи данных 31

Характеристики топологии сети – диаметр – максимальное расстояние между двумя процессорами сети; характеризует максимальнонеобходимое Характеристики топологии сети – диаметр – максимальное расстояние между двумя процессорами сети; характеризует максимальнонеобходимое время для передачи данных между процессорами, – связность (connectivity) – минимальное количество дуг, которое надо удалить для разделения сети передачи данных на две несвязные области, – ширина бинарного деления (bisection width) – минимальное количество дуг, которое надо удалить для разделения сети передачи данных на две несвязные области одинакового размера, – стоимость – общее количество линий передачи данных в многопроцессорной вычислительной системе. 32

33 33

34 34

35 35

36 36

37 37

38 38

39 39

Характеристики топологии сети Топология Диаметр Ширина Связность Стоимост бисекции ь N 2/4 (N-1) N(N-1)/2 Характеристики топологии сети Топология Диаметр Ширина Связность Стоимост бисекции ь N 2/4 (N-1) N(N-1)/2 Полный граф 1 Звезда 2 1 1 (N-1) Линейка N-1 1 1 (N-1) 2 2 N N/2 log 2 N N log 2 N/2 4 2 N Кольцо Гиперкуб Решетка (n=2) log 2 N 40

41 41

42 42

43 43

44 44

45 45

46 46

47 47

48 48

49 49

50 50

51 51

52 52

53 53

Оценка производительности параллельных ВС 54 Оценка производительности параллельных ВС 54

55 55

56 56

57 57

58 58

59 59

60 60

61 61

62 62

63 63

64 64

65 65

66 66

67 67

68 68

69 69

70 70

71 71

72 72

73 73

74 74

75 75

76 76

77 77

78 78

79 79

80 80

81 81