Министерство образования и науки Российской Федерации Федеральное агентство по образованию Государственное образовательное учреждение высшего профессионального образования «Московский Государственный Технический Университет имени Н.Э. Баумана» (МГТУ им. Н.Э. Баумана) Факультет «Аэрокосмический» Кафедра «Компьютерные системы и сети» Расчётно-пояснительная записка К курсовой работе на тему «Распределение нитей по вычислительным модулям вычислительной системы» по курсу «Вычислительные системы» Руководитель, к.т.н., доц. Ю.М. Руденко Исполнитель, студ. гр. АК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. Руденко Ю.М. Исследование информационных граф-схем со скалярными весами для планирования параллельных вычислений