- •Курский государственный технический университет
- •Предисловие
- •Введение
- •3.1.3.4 Конвейер команд в устройстве управления процессором
- •4 Теоретические основы функциональной организации многопроцессорных вс
- •4.1 Параллелизм на уровне системного программного обеспечения
- •4.1.1 Особенности мультисистемных операционных систем (мос) параллельных вс.
- •Алгоритм построения новой матрицы смежности Cp.
Алгоритм построения новой матрицы смежности Cp.
Вначале полагаем искомые матрицы PpиLp, равными исходным:
Pp = P, Lp = L.
Для всех пар операторов (i,j), у которых в матрицеPpее элемент
= 1, строим функцию зависимости операторов:
= (Ij∩Oi)(Ii∩Oj)(Oi∩Oj).
Если
= Ø, то операторыiиjнезависимы и могут выполняться
параллельно.
При
= Ø в матрицеPpобращаем
в нуль элемент
=0.
Для сохранения логических связей вычисляем элементы матрицы Lpдля выделенной в п.2 пары независимых операторов (i,j) по формуле
Lpi=LiLj,
гдеLi,Lj–i–я иj– я строки матрицыLp. Теперь логическая связь, ведущая к операторуj, должна идти также и к операторуi.
Строится промежуточная матрица смежности Cp´, в которой по сравнению с матрицейPpсохраняются только прямые связи отjкiдлиной, равной 1, т.е. в столбцах матрицыPp, просматривая их сверху вниз, обращаются в нуль сгруппированные коды «1» в каждой такой группе, кроме первых их единиц. Например, вj-м столбце матрицыPp:

Элементы новой искомой матрицы смежности Cpобразуются путем объединения двух матриц:
Cp=LpCp´
Рассмотрим преобразования для одного (i,j) элемента матрицыPp:(4,3). В исходной матрицеPэтот элемент:
=
=
1
Используя матрицы IиO, найдем, что функция связи:
=
= Ø.
Тогда в матрице Ppэтот
элемент обнуляется
=0.
Проверив строки исходной матрицы L, видим, что строкаL3 =0100 0000, а строкаL4 = 00000000, т.е. логическая связь к операторуi= 4 отсутствует.
Объединяем 4 и 3- ю строки:
Lp4 =L4L3 =0100 0000, и тем самым вводим новую логическую связь между 2 и 4-ым операторами:L²p4= 1.
Аналогично выполняется преобразование матриц для всех элементов матрицы Pp
( вначале P):
.
В нашем примере пункт 4 алгоритма не
потребовался, так как итоговая матрицаPpпосле исключения
(обнуления) всех «1» из-за
= Ø содержит только прямые связи отjиiдлиной, равной 1.
Построенные вспомогательные матрицы Cp´=PpиLpимеют вид


Преобразованная матрица смежности Ср
Cp=LpCp´=LpPp

Таким образом удалось распараллелить оба линейных участка исходной программы:

Тем самым Трахтенгерцу Э.А. удалось формализовать выявление скрытого параллелизма фрагментов линейных участков и распараллеливающее преобразование исходной последовательной программы.
4.3.2. Распараллеливание итераций сложных циклов
Наибольший резерв ускорения выполнения исходных последовательных программ скрыт в сложных вложенных циклах, выполняемых за большое число итераций. Необходимо преобразовать последовательное выполнение тела цикла в его параллельное исполнение на нескольких разных процессорах. Один из путей распараллеливания цикла - преобразование подмножеств значений индексов переменных таким способом, чтобы появилась возможность выполнения параллельных операций над элементами массивов данных, определяемых преобразованными индексами.
Для тесногнездовых многомерных вложенных циклов доказано, что их распараллеливание может быть выполнено методом гиперплоскости. Рассмотрим запись в общем виде такого цикла на языке Фортран:
DO 99 I1=I1 min, I1 max
…………………………
DO 99 In = In min, In max
![]()
99 CONTINUE
В тесногнездовом цикле все операторы DOзавершаются по метке 99 и между операторамиDOне должно быть никаких других операторов. Сложный цикл завершается, когда все подциклы выполнят оператор с меткой 99. Если такой цикл удовлетворяет следующим требованиям:
- индексные переменные Iцелочисленные и их приращения в каждой итерации в теле цикла являются целыми константами;
- в теле цикла не должно быть операторов ввода- вывода и передач управления из цикла;
- в теле цикла нет обращений к подпрограммам и функциям, параметрами или аргументами которых являются выходные переменные (левые части) операторов присваивания, составляющих тело цикла;
тогда он может быть преобразован по методу гиперплоскости в параллельно-последовательный цикл вида:
DO 99 I1=I1´min, I1´max
………………………………
DO 99 Ik = Ik´ min, Ik´ max
DO 99 CONC FOR ALL (Ik+1,..In) Si1,….ik
![]()
99 CONTINUE
Смысл записи следующий. Для каждого
элемента множества Si1,….ik,
т.е. для каждого сочетания значений
индексов (ik+1,..,in)Si1,..,ik,
копии тела цикла могут выполняться
параллельно. Выполнение цикла завершается,
когда все распараллеленные
(ik+1,..,in)- ные
ветви выполнят оператор с меткой 99. Их
параллельное выполнение повторяется
многократно в соответствии с внешними
нераспараллеливаемыми
последовательными циклами.
Метод гиперплоскости заключается в том, что существует набор гиперплоскостей в n-мерном индексном пространстве:
a1I1+a2I2+…+anIn=Cj=const,
такой,
что для всех точек (
,
,…,
)Cj,
т.е. лежащих на однойj-й
из гиперплоскостей, копии тела цикла
могут быть выполнены параллельно. Число
этих гиперплоскостейW,
т.е. набор константCj,
-
это остаточное число нераспараллеливаемых
последовательно выполняемых параллельных
обработок тела цикла. Значение константыCjдолжно изменяться после
каждогоj-го шага
параллельного выполнения копий тела
цикла. Целочисленные коэффициенты {ai},
задающие гиперплоскость, подбираются
в зависимости от вида индексных выражений
в теле исходного цикла по критерию
минимизации остаточного числа
последовательно-параллельных шаговW.
Процедура их подбора довольна сложная.
Не будем на ней останавливаться, зная,
что она успешно реализована в компиляторах.
Убедимся на конкретном примере, что при удачном подборе гиперплоскостей возможно многократное распараллеливание и ускорение выполнения тесногнездового цикла.
Рассмотрим сложный вложенный цикл с тройной индексацией элемента массива обрабатываемых данных. Зададим циклом порядок последовательного выбора элементов массива для их последующей обработки по формуле тела цикла. Допустим, что по индексу внешнего цикла выполняется последовательный перебор, а по двум другим индексам выборка элементов массива осуществляется в соответствии с индексным выражением, совмещенным с формулой обработки элементов массива, указанной в теле цикла. Цикл опишем на языке Фортран.
DO99I=1,L
DO99J=2,M
DO 99 K=2,N
U (j, k) = (U (j +1, k) + U (j, k + 1) + U(j – 1, k) + U(j, k – 1)) * 0.25
99 CONTINUE.
U(j,k) - обозначениеj,k- го элемента двухмерного массива.
Тело этого последовательного цикла выполняется L(M-1) (N-1) раз на множестве значений индексов:
{i,j,k}:1 ≤i≤L, 2 ≤j≤M, 2 ≤k≤N.
П
реобразуем
этот последовательный цикл в
параллельно-последовательный, используя
гиперплоскости вида:
2I + J + K = Cp = const, p = 1,W.
Выполним замену индексных переменных

Аналогично, можно записать обратные выражения для нахождения старых индексов:
![]()
Если внешний цикл по Iзаменить на цикл по
и заменить индексные переменные в теле
цикла, то преобразованный
последовательно-параллельный цикл
примет вид:
DO 99
= 6, 2*L + M + N
DO 99 CONC FOR ALL
{{j, k}:1≤j ≤L, 2≤
– 2j – k ≤ M, 2 ≤k ≤ N }
![]()
99 CONTINUE
Число остаточных последовательных итераций внешнего цикла W=2L+M+N-5.
Копии тела вложенного цикла для каждого
значения индекса
от 6 до 2L+M+Nвыполняются параллельно для всех
сочетаний {j,k},
удовлетворяющих ограничительным
неравенствам. Максимальное число
параллельно обрабатываемых копий тела
цикла с разными сочетаниями индексов
:
max=(1/2)
(M-1)(N-1)
cоответствует максимальной
степени распараллеливания и требуемому
числу параллельных процессов: Nпр =
max.
Достигаемое ускорение:
η = L(M-1) (N-1) / (2L+M+N– 5).
При небольших размерах массива данных
L=M=N=10
η= 9*9*10 / 20+20 -5 = 810 / 35≈23 раза,
если в системе будет Np=9*9 / 2≈ 40 процессоров.
При больших размерах массива данных
L=M=N=100 ускорение составит
η= 100*99*99 / 200+200 -5 = 9,801 *
/
395≈2481 раз,
если в системе будет Np=99*99
/ 2 ≈ 5000 процессоров, т.е. вместо
итераций потребуется выполнить всего
395 последовательно-параллельных итераций.
Наибольшее ускорение достигается для
сложных задач в мультикомпьютерах типаMPP(с массовым параллелизмом).
Если обработку больших массивов выполнять на мультипроцессорах, в которых число процессоров не превышает 256, то придется каждый последовательный проход заменить на 20 последовательных проходов пропорционально уменьшению числа процессоров (5000 : 256), и поэтому ускорение снизится до 120 раз.
Наконец, если их обработку выполнять в многопроцессорном мультискалярном микропроцессоре с числом процессоров Nпр=16 ускорение уменьшится в (5000:16) ≈ 313 раз и составит η = 8 раз для больших массивов данных, а для небольших массивов - в (40:16) ≈2,5 раза при достигаемом ускорение η =23:2,5 ≈ 8 раз. Последний пример показывает, что микропроцессор типаMMMMпри распараллеливании циклов может дать ускорение до 10 раз.
Заключительные этапы работы компилятора, состоящие в разбиении исходной последовательной программы на множество параллельно-последовательных задач (фрагментов, тредов), выполняются по следующей методике:
Выделение нераспараллеливаемых линейных участков и простых циклов, не содержащих передач управления за пределы тела цикла;
Из выделенных линейных участков, простых циклов, гамаков и полученных при распараллеливании фрагментов составных линейных участков и копий тел распараллеленных циклов формируются задачи (треды), которые иногда называются упорядоченными линейными последовательностями. Из них формируются процессы (треды), потоки и нити. Гамак выделяется по признаку, что это разветвленный подграф, в который можно войти только через его входную вершину и выйти только через его выходную вершину.

Методы оценки реальной производительности микропроцессоров и ВС.
У нас в стране применяются следующие способы оценки производительности вычислительных систем:
- номинальнаяпроизводительность- это набор номинальных быстродействий устройств системы, в том числе в первую очередь быстродействий процессоров и памятей;
-комплекснаяпроизводительность-это набор быстродействий тех же устройств системы, но уменьшенных с учетом ограничений, накладываемых структурой системы, например из-за последовательного соединения устройств разных быстродействий, когда быстродействие такой цепи устройств определяется наиболее медленным из них;
-системная(фактическая) производительность- это фактическая скорость полной обработки программ с учетом ее снижения из-за особенностей структуры системы, затрат времени на обмен информацией между процессорами и памятью, памятью и периферийными устройствами, а также потерь машинного времени на реализацию управления процессами операционной системой и выполнение системных программ.
Размерность системной производительности [Пс]=задач/с или операций/с. Пс с размерностью задач/с называется пропускной способностью системы. Системную производительность определяют либо экспериментально в реальной системе на тестовых наборах прикладных программ, либо с помощью имитационного моделирования вычислительной системы на случайных рабочих нагрузках, соответствующих тестовым и реальным прикладным программам.
В практике зарубежных компаний при составлении разных типов микропроцессоров или вычислительных систем применяются два способа оценки производительности:
-пиковая производительность- это теоретический максимум быстродействия компьютера при идеальных условиях, определяемый как число вычислительных операций, выполняемое в единицу времени всеми имеющимися в процессоре АЛУ при допущениях, что имеется бесконечная последовательность несвязанных между собой и неконфликтующих при доступе в память команд, а также, что команды и операнды выбираются из внутрикристальных кэш-памятей программ и данных без промахов;
-реальнаяпроизводительность- это скорость обработки реальных программ в центральном ядре компьютера, которая учитывает потери времени на обмен информацией между процессором и многоуровневой оперативной памятью, а именно кэш-памятями и основной памятью, и которая зависит от качества организации центрального ядра, от конфликтов между командами, от пропускной способности внутрисистемного интерфейса, например общей шины, и от эффективности компиляции объектных кодов программ. Однако она не учитывает потери времени на работу операционной системы и на взаимодействие с периферийными устройствами, в том числе и с жесткими магнитными дисками.
Пиковая производительность в основном определяется быстродействием процессора и измеряется тремя видами размерностей:
-MIPS-миллион операций с фиксированной точкой в секунду;
-MFLOPS- миллион операций с плавающей точкой в секунду;
-Mtops– миллион теоретических операций в секунду.
Так как в современных микропроцессорах возможно выполнение нескольких команд за один такт, пиковая производительность вычисляется путем умножения тактовой чистоты на число параллельно выполняемых команд. Например, процессор POWER4 за один такт в конвейерном режиме может выполнять 4 операции с плавающей точкой и 4 операции с фиксированной точкой на тактовой частоте 1.3 ГГц. Поэтому его пиковая производительность одинакова на всех форматах операндов и составляет 5200MFLOPSи 5200MIPS.
Более детальная оценка пиковой производительности выполняется по сложным эмпирическим формулам, учитывающим тактовую частоту, набор функциональных устройств, пропускную способность и набор внутренних шин, длину разрядной сетки и т.п. Эта оценка называется составной теоретической производительностью и измеряется в Mtops.
Реальная производительность в несколько раз меньше пиковой, так как она зависит от числа уровней кэширования памяти, типа архитектуры процессора и ее приспособленности к виду решаемой задачи, т.е. от вида программы и типа обрабатываемых данных.
Реальная производительность определяется путем экспериментального тестирования ядра компьютера на наборах тестовых задач, характерных для области его применения, на так называемых «бенчмарках».
Экспериментально определяется время обработки процессором каждой из задач тестового набора и на него делится время обработки этой же задачи на какой–либо согласованной между компаниями эталонной ЭВМ. Находится среднегеометрическое значение вычисленных коэффициентов ускорения обработки тестовых задач. Найденное среднее значение ускорения (повышения производительности) по сравнению с эталонной ЭВМ называется индекс производительностии является безразмерной величиной.
Зарубежные компании используют следующие типы согласованных между собой пакетов текстовых программ:
-SPEC92,SPEC95,CPU2000 для тестирования микропроцессоров, персональных ЭВМ и рабочих станций широкого назначения;
-TPC-A,B,C,D,E(1990-2000 годы) для тестирования компьютеров, предназначенных для выполнения бизнес - транзакций (коммерческого обмена товарами, услугами или деньгами);
- смеси прикладных задач для рабочих станций: 1) GWM(GeneralWorkstationMix) для рабочих станций, специализирующихся на разработке программного обеспечения;
2) MechanicalCADMixдля механических САПР; 3)GISMixдля геоинформационных систем с обработкой изображений;
4) GeneralBusinessдля электронной почты, электронных таблиц, баз данных и текстовых процессоров;
-смеси для серверов: 1) ComputeServerMixдля вычислительных серверов с большим объемом вычислений (моделирование, взламывание шифров и т.п.);
2) FileServerMixиRBMSMixдля файл-серверов и систем управления базами данных;
-LINPACK,SCALAPACK,BLASдля многопроцессорных систем, ориентированных на решение систем линейных уравнений;
-NPB, разработанный в центре космических исследованийNASA, для многопроцессорных систем, ориентированных на решение трехмерных задач в частных производных, обработку разреженных матриц высокого порядка, вычисление интегралов, сортировку целых чисел, требующих интенсивного межпроцессорного взаимодействия.
Найденные индексы производительности всех микропроцессоров, компьютеров и многопроцессорных систем широко публикуются.
Рассмотрим пакеты тестовых программ корпорации SPEC (Standard Performance Evaluation Corporation). Индекс производительности по пакетуSPEC92 вычисляется относительно эталонной ЭВМVAX11/780 компанииDEC, содержащей одноуровневую кэш-память. Текстовый пакет состоит из 20- ти характерных программ научно-технической обработки с плавающей и фиксированной точкой: обработка матриц, задачи квантовой и ядерной физики, решение дифференциальных уравнений в обыкновенных и частных производных, метод Монте-Карло, утилиты компилятора и ОСUNIX, интерпретатор языка искусственного интеллектаLispи т.п.
Опубликованы следующие индексы производительности по SPEC92 для микропроцессоров:
Pentium Pro-220, POWER 580-150,
Alpha 21164-500…700,
PA-8000 -360…550.
Индексы производительности по пакету SPEC95 вычисляются относительно эталонной ЭВМSPARC-station10/40, содержащей двухуровневую кэш-память. Тестовый пакет состоит из 18-ти программ: моделирование микросхем, компиляция с языка С, компрессия текстовых и графических файлов, задача искусственного интеллекта, манипулирование в реляционной базе данных, гидродинамические расчеты, предсказание погоды, физические и химические задачи, в том числе решение уравнения Максвелла из электромагнетизма и сложных дифференциальных уравнений в частных производных.
Опубликованы следующие индексы производительности суперскалярных микропроцессоров по SPEC95:
Pentium Pro-5…6,
Alpha 21164-7…11,
PA-8000 -12…20,
Pentium II- 7…11,
PentiumIV-45…70,
POWER4-200,
E2k(компания Эльбрус, Россия)-135-350
Следует еще раз обратить внимание на то, что реальная производительность не учитывает потерь времени на обмен информацией с периферийными устройствами: дисковые накопители, мониторы, сканеры, плоттеры, печатающие устройства и т.п.
Эти потери времени могут быть учтены только в системной (фактической) производительности, единственным методом оценки которой в стадии проектирования ВС является имитационное моделирование трасс и профилей вычислительных процессов методом Монте-Карло, осваиваемое в четвертой лабораторной работе по данной дисциплине.
