- •25. Параллелизм как основа высокопроизводительных вычислений
- •Уровни параллелизма
- •Параллелизм уровня задания
- •Параллелизм уровня программ
- •Параллелизм уровня команд
- •Метрики параллельных вычислений
- •Профиль параллелизма программы
- •Ускорение, эффективность, загрузка и качество
- •Закон Амдала
- •Закон Густафсона
- •Классификация параллельных вычислительных систем
- •Классификация Флинна
Метрики параллельных вычислений
Ш силу особенностей параллельных вычислений для оценки их эффективности используют специфическую систему метрик. Наиболее распространенные из таких метрик рассматриваются ниже.
Профиль параллелизма программы
Число процессоров многопроцессорной системы, параллельно участвующих в выполнении программы в каждый момент времени t, определяют понятием степень параллелизма D(t) (DOP, Degree Of Parallelism). Графическое представление параметра D(t) как функции времени называют профилем параллелизма программы. Изменения в уровне загрузки процессоров за время наблюдения зависят от мно-тах факторов (алгоритма, доступных ресурсов, степени оптимизации, обеспечиваемой компилятором и т. д.). Типичный профиль параллелизма для алгоритма декомпозиции (divide-and-conquer algorithm) показан на рис. 25.1.
В дальнейшем будем исходить из следующих предположений: система состоит из п гомогенных процессоров; максимальный параллелизм в профиле равен т и, в идеальном случае, п » т. Производительность Д одиночного процессора системы выражается в единицах скорости вычислений (количество операций в единицу времени) и не учитывает издержек, связанных с обращением к памяти и пересылкой данных. Если за наблюдаемый период загружены i процессоров, то D = i

Рис. 25.1. Профиль параллелизма
Общий объем вычислительной работы W (команд или вычислений), выполненной начиная со стартового момента ts до момента завершения tL, пропорционален площади под кривой профиля параллелизма:
![]()
Интеграл часто заменяют дискретным эквивалентом:
![]()
где
ti
— общее
время, в течение которого D
= i,
а
ti
=te-ts
— общее
затраченное
время.
Средний параллелизм А определяется как
![]()
В дискретной форме это можно записать так:

Профиль параллелизма на рисунке за время наблюдения (ts ,te) возрастает от 1 до пикового значения т = 8, а затем спадает до 0. Средний параллелизм А = (1 х 5 + + 2x3 + 3x4 + 4x6 + 5x2 + 6x2 + 8x3)/(5+ 3 + 4 + 6 + 2 + 2 + 3) = 93/25 = = 3,72. Фактически общая рабочая нагрузка и А представляют собой нижнюю границу асимптотического ускорения.
Будем
говорить, что параллельная программа
выполняется в режиме г, если для ее
исполнения задействованы г процессоров.
Время, на продолжении которого система
работает в режиме i,
обозначим через ti
,
а
объем работы, выполненной в ре-жиме
i,
как Wi=
i
ti.
Тогда, при наличии п
процессоров
время исполнения Т(п)
для
двух экстремальных случаев: п
= 1(T(1))
и n
=
(Т(
))можно
записать в виде:
![]()
Асимптотическое
повышение быстродействия S
определяется как отношение T(1)
к T(
);

Сравнивая это выражение и предыдущие уравнения, можно констатировать, что в идеальном варианте S= А. В общем случае нужно учитывать коммуникационные задержки и системные издержки. Отметим, что как S так и А были определены в предположении, что п » т.
В прикладных программах имеется широкий диапазон потенциального параллелизма. М. Кумар в своей статье [146] приводил данные, что в вычислительно интенсивных программах в каждом цикле параллельно могут выполняться от 500 до 3500 арифметических операций, если для этого имеется существующая вычислительная среда. Однако даже правильно спроектированный суперскалярный процессор способен поддерживать выполнение от 2 до 5,8 команды за цикл. Эти цифры дают пессимистическую картину возможного параллелизма.
