Курсовая по Руденко

advertisement
Министерство образования и науки Российской Федерации
Федеральное агентство по образованию
Государственное образовательное учреждение высшего профессионального образования
«Московский Государственный Технический Университет имени Н.Э. Баумана»
(МГТУ им. Н.Э. Баумана)
Факультет «Аэрокосмический»
Кафедра «Компьютерные системы и сети»
Расчётно-пояснительная записка
К курсовой работе на тему
«Распределение нитей по вычислительным модулям вычислительной системы»
по курсу «Вычислительные системы»
Руководитель,
к.т.н., доц.
Ю.М. Руденко
Исполнитель,
студ. гр. АК5-101
2010
А.Ю. Ракуль
2
3
Реферат
С.20, табл.4, рис.13, источников 3, приложений 2
ВЫЧИСЛИТЕЛЬНАЯ СИСТЕМА, ВЫЧИСЛИТЕЛЬНЫЙ МОДУЛЬ, ОПЕРАТОР,
ПОСЛЕДОВАТЕЛЬНЫЙ АЛГОРИТМ, ПАРАЛЛЕЛЬНЫЙ АЛГОРИТМ, ГРАФ-СХЕМА,
РАННИЙ СРОК ВЫПОЛНЕНИЯ, НИТЬ.
Объектом проектирования является система распределения нитей по вычислительным
модулям вычислительной системы.
Цель работы – программный продукт, выполняющий распределение нитей по
вычислительным модулям.
Система выполнена в виде программы, имеющий графический интерфейс. Входными
данными являются последовательный алгоритм, заданный в виде описания его
программных модулей, времена выполнения программных модулей и передачи данных
между модулями вычислительной системы, структуры вычислительных систем. Результат
работы системы представляется в графическом, табличном и числовом виде.
Материалы по курсовой работе представлены в виде графической части и расчётнопояснительной записки.
Задачи, решаемые в процессе проектирования: анализ возможных решений задачи,
разделение задачи на отдельные подзадачи, разработка алгоритмов их решения,
реализация алгоритмов в виде программных модулей.
4
Содержание
Задание на выполнение курсовой работы ………………………………………………... 2
Реферат ……………………………………………………………………………………… 3
Содержание ……………………………………………………………………………….... 4
Введение ……………………………………………………………………………………. 5
1. Анализ задания ………………………………………………………………………….. 6
2. Преобразование последовательного алгоритма в параллельный ……………..……. 7
3. Построение граф-схемы алгоритма …………………………………………………..... 9
4. Определение ранних сроков выполнения операторов. Построение временных
диаграмм ………………………………………………………………………………… 11
5. Распределение нитей по вычислительным модулям ………………………………… 16
6. Распределение операторов по ВМ вычислительной системы с распределённой
памятью для информационной граф-схемы ………………………. ………………………...19
Заключение ………………………………………………………………………………... 24
Список использованных источников ……………………………………………………. 25
Приложение 1. Схема алгоритма
Приложение 2. Структура заданных вычислительных систем
5
Введение
Вычислительная система позволяет размещать в своих вычислительных модулях
операторы
параллельной
программы.
Параллельной
программой
называется
представление параллельного алгоритма на языке программирования, доступном
вычислительной системе. Параллельный алгоритм – это описание процесса обработки
информации, ориентированного на реализацию с помощью вычислительных систем.
В каждом модуле вычислительной системы размещается одна нить параллельного
алгоритма. Под нитью понимается последовательность операторов, каждый из которых
выполняется одновременно с другими операторами параллельной программы, в связи с
чем их приходится размещать в различных модулях вычислительной системы.
Наглядно нити могут быть представлены с помощью временных диаграмм выполнения
операторов. На них изображаются операторы и связи между ними, за счёт чего можно
определить, какие операторы, в какой последовательности и одновременно с какими
операторами будут выполняться. Диаграммы выполнения операторов – удобный способ
наглядного представления многопроцессорной обработки.
На распределение нитей по модулям вычислительной системы влияет структура
системы, особенности памяти (разделяемая или распределённая), а также особенности
самого алгоритма такие, как количество логических операторов, наличие циклов и число
итераций в них.
6
1. Анализ задания
Исходными данными являются схема последовательного алгоритма, структуры
вычислительных систем 2 типов (гиперкуб и циркулянта), а также времена выполнения
программных модулей и передачи данных между вычислительными модулями.
Результатом
работы
системы
должно
быть
распределение
нитей
по
модулям
вычислительной системы, поэтому в работе системы можно выделить следующие этапы:
1. преобразование последовательного алгоритма в параллельный;
2. построение граф-схемы алгоритма;
3. подсчёт времени выполнения операторов с учётом времени передачи данных между
вычислительными модулями;
4. определение ранних сроков выполнения операторов;
5. построение диаграмм выполнения операторов с учётом наличия логических
операторов в схеме алгоритма;
6. определение максимального числа нитей;
7. расчёт матрицы дистанций для указанных структур вычислительных систем;
8. распределение нитей по вычислительным модулям.
Таким образом, промежуточные результаты работы системы могут быть представлены
в графической, табличной и числовой формах, что необходимо учесть при разработке
программы. Удобно выделить функции и процедуры, осуществляющие приведённые
выше этапы в отдельные программные модули.
7
2. Преобразование последовательного алгоритма в параллельный
В приложении 1 приведена схема последовательного алгоритма. Он включает 5
логических операторов, один из которых является оператором CASE. Они ограничивают
линейные участки, которые следует распараллеливать. Распараллелить можно следующие
участки алгоритма:
1. в начальном участке независимыми являются модули AB, AC и AD. Таким образом
образуется три входа в алгоритм;
2. вторая ветвь оператора CASE (CA), независимыми являются программные модули
EA и EB;
3. участок в ветви «Да» условного оператора DB, включающий программные модули
DC, DE, DD. Независимыми являются и могут выполняться параллельно модули DC и DD
;
4. третья ветвь оператора CASE(CA). Независимыми являются модули FC и FB ветви
ДА условного оператора FA.
5. в пятой ветви оператора CASE независимыми являются и могут выполняться
параллельно модули HA и HB.
После распараллеливания был получен алгоритм, изображённый на рис.1:
8
1
2
AB(a,b,SAB)
AC(d,c,SAC)
3
4
ДА
AD(a,SAD)
НЕТ
BA(SAD)
12
BC(e,SBC)
11
5
BB(d,SBB)
...
BB(d,SBB)
13
BD(SBC,SBD)
14
BE(a,SBD,SBE)
15
BF(SBE,SBF)
16
CA(SBF)
17
18
DA(f,SDA)
19
EA(a,SEA)
24
21
20
EB(b,SEB)
ДА
НЕТ
26
25
DB(SDA)
ДА
EC(g,f,SEA,SEB,SEC)
22
FA(SBF)
FC(c,SFC)
НЕТ
27
FB(b,SBF,SFB)
GA(a,b,c,SGA)
23
HB(e,SHB)
HA(a,c,SAH,)
28
ДА
FD(d,SFD)
29
НЕТ
30
GB(SGA)
HC(f,SHC,SHB)
31
DC(g,SDC)
32
DD(a,b,SDD)
34
33
DF(g,SDF,SDA)
35
FE(e,SFD,SFE)
GC(g,SGA,SGC)
36
GE(a,SGE)
37
HD(f,SHC,SHD)
38
39
40
DE(f,SDD,SDE)
DG(g,SDF,SDG)
GD(g,f,SGA,SGC,SGD)
Рис.2.1. Параллельный алгоритм
41
GF(f,SGE,SGF)
9
3. Построение граф-схемы алгоритма
При построении граф-схемы следует учесть, что цикл по счётчику циклов
распараллеливается введением дополнительных вершин граф-схемы. При нумерации
вершин
необходимо
учитывать
ярусы,
которым
они
принадлежат:
вершины,
принадлежащие (d+1)-му ярусу, должны иметь номера большие, чем номера вершин d-го
яруса. Ярус – множество вершин, имеющих одинаковую максимальную длину пути,
ведущего в них.
Веса вершин и время обмена информацией между программными модулями,
соответствующими вершинам граф-схемы, выбраны с помощью датчика случайных чисел.
Граф-схема параллельного алгоритма представлена на рис.2:
Рис.3.1. Граф-схема алгоритма
Для приведённой граф-схемы матрица следования с указанием весов дуг и вершин
будет следующей (табл.1):
10
Таблица 1. Матрица следования с указанием весов дуг и вершин (SDR)
1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
2
3
1
5
2
2
2
2
2
2
2
2
2
2
1
3
1
1
1
1
1
1
1
2
2
2
2
2
2
2
1
2
3
2
2
2
2
2
4
1
1
2
2
2
1
1
1
2
3
43
p
1
4
2
1
1
2
2
2
2
2
2
2
3
1
2
1
3
7
2
4
5
3
1
3
1
4
1
2
3
4
5
2
5
2
6
2
5
7
3
2
5
2
11
4.Определение ранних сроков выполнения операторов. Построение
временных диаграмм
Ранние сроки выполнения операторов будут следующими:
t1,4=5, t1,5=6, t1,6=8, t1,7=8, t1,8=8, t1,9=9, t1,10=8, t1,11=8, t1,12=8, t1,13=8, t1,14=9, t1,16=11,
t1,17=12, t1,18=15, t1,19=22, t1,20=17, t1,21=19, t1,22=20, t1,23=18, t1,24=16, t1,25=20, t1,26=23, t1,27=23,
t1,28=21, t1,29=22, t1,30=23, t1,31=22, t1,32=25, t1,33=25, t1,34=28, t1,35=25, t1,37=24, t138=27, t1,39=31,
t1,40=31, t1,41=27, t1,42=29, t1,43=29.
При построении временных диаграмм выполнения операторов необходимо учитывать, что
они строятся для информационно-логической граф-схемы и не все операторы будут
выполнены. Это можно сделать, например, с помощью динамического плана, состояние
которого изменяется каждый раз, как только выполняется очередной логический
оператор.
Для рассматриваемой граф-схемы временные диаграммы будут выглядеть, как
показано на рис.4.1-4.19:
Рис.4.1. Диаграмма ранних сроков окончания выполнения
12
13
14
15
Таким образом, максимальное число нитей для данного алгоритма равно 7.
16
5. Распределение операторов по ВМ вычислительной системы с общим
полем памяти для информационной граф-схемы
5.1. Вычислительная система типа «Обобщённый гиперкуб»
Для удобства размещения операторов алгоритма на вычислительные модули ВС,
представим структуру ВС в виде матрицы дистанций между вычислительными модулями
ВС, в которой указаны расстояния между ВМ, измеренные в количестве ВМ между двумя
рассматриваемыми.
z
4
3
2
1
0
1
2
1
3
y
2
x
Рисунок 5.1.1. Схема представления обобщенного 3-х мерного гиперкуба 4х4х5
Построим для него матрицу дистанций, которую, в дальнейшем удобно
использовать для размещения нитей решаемой задачи. Нумерация ВМ производится, как
показано в таблице 5.1.2.
Матрица дистанций представлена в таблице 5.1.1. В последней строке приведены
итоговые суммы по столбцам. Минимальная сумма определяет лучший ВМ, который
имеет минимальное расстояние ко всем остальным ВМ. В данном случае лучшими ВМ
являются вычислительные модули с номерами 27, 47.
17
Таблица 5.1.1
.
Таблица 5.1.2
Координата
000
001
002
003
004
010
011
012
013
014
020
021
18
ВМ (x,y,z)
Номер ВМ
1
2
3
4
5
6
7
8
9
10
11
12
Координата
022
023
024
030
031
032
033
034
100
101
102
103
Номер ВМ
13
14
15
16
17
18
19
20
21
22
23
24
Координата
104
110
111
112
113
114
120
121
122
123
124
130
Номер ВМ
25
26
27
28
29
30
31
32
33
34
35
36
Координата
131
132
133
134
200
201
202
203
204
210
211
212
Номер ВМ
37
38
39
40
41
42
43
44
45
46
47
48
Координата
213
213
220
221
222
223
224
230
231
232
233
234
Номер ВМ
49
50
51
52
53
54
55
56
57
58
59
60
Координата
300
301
302
303
304
310
311
312
313
314
320
321
Номер ВМ
61
62
63
64
65
66
67
68
69
70
71
72
Координата
322
323
324
330
331
332
333
334
73
74
75
76
77
78
79
80
ВМ (x,y,z)
ВМ (x,y,z)
ВМ (x,y,z)
ВМ (x,y,z)
ВМ (x,y,z)
ВМ (x,y,z)
Номер ВМ
Tак как рассматривается ВС с общей памятью, обмена данными через каналы связи между
процессорами нет, и количество нитей меньше, чем число процессоров, поэтому
распределение нитей между ВМ может осуществляться, например, следующим образом:
первая нить загружается в первый ВМ, вторая – во второй и т. д.
Построим нити для диаграммы, представленной на рисунке .1. Первую нить
составят операторы: Н1={1, 4, 19, 26, 33}, H2={2, 5, 20, 34, 40}, H3={3, 13, 14, 16, 17, 18,
21, 27, 35, 41}, H4={6, 22, 28}, H5={7, 23, 29}, H6={8, 24, 30}, H7={9, 25}, H8={10, 31},
H9={11, 37, 42}, H10={12, 38, 43}, H11={32, 39}, 5}.
19
Рисунок 5.1.1. Распределение операторов по ВМ вычислительной системы с общим
полем памяти для информационной граф-схемы.
Информационно-логическая граф-схема, как известно, отличается от информационной
наличием логических операторов, а так же операторов выбора вариантов, поэтому здесь
возможно несколько вариантов построения планов распределения операторов по
вычислительным модулям ВС. Так первый, наиболее простой, аналогичен
рассмотренному в предыдущем разделе способу.
После учёта работы всех логических операторов, в зависимости от исходных данных,
определяющих ту или иную ветвь срабатывания логических операторов, количество
используемых операторов колеблется от 7 до трёх. При использовании ВС с общей
памятью распределение операторов по ВМ может быть произвольным. Например, первую
нить можно загрузить в первый процессор, вторую выполнить на втором процессоре,
третью нить на третьем процессоре.
6. Распределение операторов по ВМ вычислительной системы с
распределённой памятью для информационной граф-схемы
При построении плана распределения операторов по ВМ вычислительной системы с
распределённой памятью для информационной граф-схемы возникают определённые
трудности, связанные с передачей информации через транзитные ВМ. Предлагаемый
метод основывается на методе, изложенном в предыдущем разделе. Сущность метода
заключается в том, что на первом этапе создаются нити без учёта обмена информацией
между ВМ. Затем при построении нитей в моменты обмена данными длины нитей
корректируются на время обмена информацией ав данной точке. Вначале получаем
модифицированные веса вершин в виде pm,j=pj+qj,i ,где pj – вес j-й вершины, qj,i – вес дуги,
20
исходящей из j-й вершины. При использовании транзитных ВМ модифицированный
вес возрастает на qj,i(n-1), где n – количество используемых транзитных процессоров.
Для рассматриваемой граф-схемы определим ранние сроки окончания выполнения
операторов без учёта времён обмена информацией между операторами: t 1,1=1, t1,2=4, t1,3=2,
t1,4=5, t1,5=6, t1,6=8, t1,7=8, t1,8=8, t1,9=9, t1,10=8, t1,11=8, t1,12=8, t1,13=8, t1,14=9, t1,16=11,
t1,17=12, t1,18=15, t1,19=22, t1,20=17, t1,21=19, t1,22=20, t1,23=18, t1,24=16, t1,25=20, t1,26=23, t1,27=23,
t1,28=21, t1,29=22, t1,30=23, t1,31=22, t1,32=25, t1,33=25, t1,34=28, t1,35=25, t1,37=24, t138=27, t1,39=31,
t1,40=31, t1,41=27, t1,42=29, t1,43=29
Учёт времён передачи информации осуществляется, используя соотношения: для
развёртки – p,j=qi,j+pj, где j= m, n – номера операторов, образующих развёртку; для свёртки
– pj= qj,i +pj где j= m, n – номера операторов, образующих cвёртку. Этим соотношениям
удовлетворяют ранние сроки окончания выполнения операторов с учётом времён
передачи информации. Модифицированные веса составят: p1=1+3=4, p2=3+1=4,
p3=2+5=7, p4=1, p5=2+1=3, p6=2+3=5, p7=2+3=5, p8=2+3=5, p9=2+3=5, p10=2+3=5,
p11=2+3=5, p12=2+3=5, p13=2+3=5, p14=1+2=3, p16=2+1=3, p17=4+3=7, p18=2,
p19=8+2=10, p20=2+4=6, p21=4+5=9, p22=5+4=9, p23=3+4=7, p24=3+2=5, p25=9+2=11,
p26=1, p27=4, p28=1+2=3, p29=2+2=4, p30=3+2=5, p31=4, p32=6+1=73, p33=2+1=3.
Полученные нити разместим на структуре типа обобщённый гиперкуб
(см. рисунок 5.1.1), учитывая, что ветви цикла с целью обеспечения минимального
времени вычисления цикла должны иметь одинаковое время передачи данных. Находим
нить, содержащую начальную вершину граф-схемы. В матрице дистанций определяем
строки с минимальными суммами. В данном случае – это 27-я, и 47-я строки. Выбираем
27-ю строку. В 27-й строке (27-м ВМ) расположим вторую нить. В таблице эта ситуация
отображается символом «2.». Далее пытаемся разместить цикл, который организуется
пятым оператором первой нити. На ближайшем расстоянии к 27-й строке находятся 7-й,
22-й, 26-й, 28-й, 32-й, 47-й столбцы. С помощью этих ВМ можно организовать цикл. Так
как самых близких ВМ (расстояние=1) на все нити цикла не хватит, то выбираем еще 1
ВМ с расстоянием до 27-го ВМ равным 2 (23-й ВМ).
Размещаем на главной диагонали таблицы 6.1 соответствующие нити с указанием её
номера и точки. Точка используется для облегчения визуализации нити.
21
Таблица 6.1
22
Рисунок 6.1 Распределение операторов по ВМ вычислительной системы с
распределённой памятью для информационной граф-схемы
Рассмотрим построение нитей для граф-схемы алгоритма решаемой задачи с учётом
времени передачи информации. ВМ может обрабатывать и передавать информацию. В
этом случае время решения задачи сравнивается с временем передачи информации и
выбирается время, максимальное из этих двух.
Так как структура ВС регулярна, то в матрице дистанций, представленной в таблице 6.2,
анализ на оптимальное размещение нитей не требуется. Для реализации цикла (нити 4, 5,
6, 7, 8, 9, 10) используем ВМ, отстоящие на дистанции 1 от нулевого ВМ. Реализовать
решение заданной задачи на структуре ВС типа циркулянта (11, 1,3, 5, 7), у которого не
достаточно ВМ, имеющих неединичную
дистанцию, проблематично, так как
использование дистанции 2 требует дополнительные транзитные процессоры, которых в
данной структуре недостаточно. В данном случае можно пойти двумя способами. Первый
способ заключается в том, при заданном количестве ВМ увеличить количество связей.
Второй – заключается в увеличении количества процессоров. Рассматривается ВС типа
циркулянта (11, 1, 2. 5). Матрица дистанций для этой структуры представляется
таблицей 6.2.
23
Таблица 6.2
0
1
2
3
4
5
6
7
8
9
10
0
+.
1
2
1
1
1
1
1
1
2
1
1
1
4.
1
2
1
1
1
1
1
1
2
2
2
1
2.
1
2
1
1
1
1
1
1
3
1
2
1
3.
1
2
1
1
1
1
1
4
1
1
2
1
0
1
2
1
1
1
1
5
1
1
1
2
1
10.
1
2
1
1
1
6
1
1
1
1
2
1
9.
1
2
1
1
7
1
1
1
1
1
2
1
8.
1
2
1
8
1
1
1
1
1
1
2
1
7.,11. 1
2
9
2
1
1
1
1
1
1
2
1
6.
1
10
1
2
1
1
1
1
1
1
2
1
5.
Вначале размещаются нити цикла алгоритма Т4 – Т10. Затем делается попытка
разместить все остальные нити. На отметке времени t=4 осуществляется обмен данными
между нитями Т2 и Т1, Т3 и Т1. На отметке времени t=5 Нить Т1 передаёт информацию в
нити Т2 и Т3. Затем исполняется цикл: 2-ой ВМ(нить Т2) передаёт информацию в
вычислительные модули 1, 10, 9, 8, 7, 6, 5(Нити Т4-Т10). Дальше вычислительные модули,
отвечающие за цикл, связываются с третьим ВМ(нить Т3). Нужно отметить, что первый
ВМ(нить Т4) не связан непосредственно с третьим ВМ(Нить Т3), но за время исполнения
операторов 14, 16, 17(нить Т3) для передачи используется транзитный процессор 4.
Размещение нитей на вычислительных модулях ВС показаны в таблице 6.2. На главной
диагонали записываются номера нитей, отмеченных точкой. Номер строки или столбца
определяет номер используемого ВМ. Покажем размещение нитей рисунка на ВС типа
циркулянта (11, 1, 3, 5, 7), показанной на рисунке 6.2. Размещение загруженных ВМ
показано в виде закрашенных вершин граф-схемы.
Рисунок 6.2. Загрузка циркулянта (11, 1, 3, 5, 7) нитями граф-схемы приложения 1
24
Заключение
При выполнении курсовой работы были закреплены знания, полученные при изучении
теоретического курса, а также получены новые, касающиеся распределения нитей по
модулям вычислительной системы.
В процессе выполнения курсовой работы была выполнена вся совокупность задач,
связанных с планированием выполнения параллельного алгоритма на вычислительной
системе. Часть из них связана с особенностями самого алгоритма, часть – с особенностями
вычислительной системы.
В данной работе рассматривался учебный пример алгоритма и вычислительной
системы, поэтому большинство из задач можно было для проверки результатов работы
программ решить вручную. Однако реальные алгоритмы и вычислительные системы
отличаются большой сложностью и подобная проверка невозможна, из-за чего возрастает
значение систем планирования выполнения параллельных алгоритмов.
25
Список использованных источников
1. Руденко Ю.М. Курс лекций по курсу «Вычислительные системы». – М., 2009.
2. Руденко Ю.М. Лабораторный практикум по организации параллельных вычислений:
Методические указания. – М.: Изд-во МГТУ им. Н.Э. Баумана, 2006. – 67 с.: ил.
3. Руденко Ю.М. Исследование информационных граф-схем со скалярными весами
для планирования параллельных вычислений
Download