Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
32
Добавлен:
01.05.2014
Размер:
998.25 Кб
Скачать

Метрики параллельных вычислений 4 8 1

Общая форма параллелизма на уровне программ проистекает из разбиения программируемых данных на подмножества. Это разделение называют декомпозицией области (domain decomposition), а параллелизм, возникающий при этом, носит название параллелизма данных. Подмножества данных назначаются разным вычислительным процессам, и называется этот процесс распределением данных (data distribution). Процессоры выделяются определенным процессам либо по инициативе программы, либо в процессе работы операционной системой. На каждом процессоре может выполняться более чем один процесс.

Параллелизм уровня команд

Параллелизм на уровне команд имеет место, когда обработка нескольких команд или выполнение различных этапов одной и той же команды может перекрываться во времени. Разработчики вычислительной техники издавна прибегали к методам, известным под общим названием «совмещения операций*-, при котором аппаратура ВМ в любой момент времени выполняет одновременно более одной операции. Этотобщий принцип включает в себя два понятия: параллелизм и конвейеризацию. Хотя у них много общего и их зачастую трудно различать на практике, термины эти отражают два принципиально различных подхода.

В первом варианте совмещение операций достигается за счет того, что в составе вычислительной системы отдельные устройства присутствуют в нескольких копиях. Так, в состав процессора может входить несколько АЛУ, и высокая производительность обеспечивается за счет одновременной работы всех этих АЛУ. Второй подход был описан ранее.

Метрики параллельных вычислений

В силу особенностей параллельных вычислений для оценки их эффективности используют специфическую систему метрик. Наиболее распространенные из таких метрик рассматриваются ниже.

Профиль параллелизма программы

Число процессоров многопроцессорной системы, параллельно участвующих в выполнении программы в каждый момент времени t, определяют понятием степень параллелизма D(t) (DOP, Degree Of Parallelism). Графическое представление параметраD(t) какфункциивремениназываютпрофилем параллелизма программы.

Изменения в уровне загрузки процессоров за время наблюдения зависят от многих факторов (алгоритма, доступных ресурсов, степени оптимизации, обеспечиваемой компилятором и т. д.). Типичный профиль параллелизма для алгоритма декомпозиции (divide-and-conquer algorithm) показан на рис. 10.1.

В дальнейшем будем исходить из следующих предположений: система состоит из л гомогенных процессоров; максимальный параллелизм в профиле равен т и, в идеальном случае, п >> т. Производительностьодиночного процессора системы выражается в единицах скорости вычислений (количество операций в единицу времени) и не учитывает издержек, связанных с обращением к памяти и пересылкой данных. Если за наблюдаемый период загружены i процессоров, то D - i.

16Заk.470

4 8 2 Глава 10. Параллелизм какосновaвысокопроизводительных вычислений

Рис. 10 . 1 . Профиль параллелизма

Общий объем вычислительной работы W (команд или вычислений), выполненной начиная со стартового момента ts до момента завершения tc, пропорционален площади под кривой профиля параллелизма:

Интеграл часто заменяют дискретным эквивалентом:

СреднийпараллелизмА

В дискретной форме это можн

:

Профиль параллелизма на рисунке за время наблюдения (ts, tc) возрастает от 1 до пикового значения т = 8, азатем спадает до 0. Средний параллелизм A = (1x5 + + 2 x 3 + 3 x 4 + 4 x 6 + 5 x 2 + 6x2 + 8x3) / (5+ 3 + 4 + 6 + 2 + 2 + 3) - 93/25- = 3,72. Фактически общая рабочая нагрузка и А представляют собой нижнюю границу асимптотического ускорения.

Будем говорить, что параллельная программа выполняется в режиме i, если для ее исполнения задействованы i процессоров. Время, на продолжении которого система работает в режиме i, обозначим через ti а объем работы, выполненной в ре-

Метрики параллельных вычислений 4 8 3

Асимптотическое повышение быстродействия 5_ определяется как отношение

Сравнивая это выражение и предыдущие уравнения, можно констатировать, что в идеальном варианте Soo = А. В общем случае нужно учитывать коммуникационные задержки и системные издержки. Отметим, что какSoo,так и А были определены в предположении, что п >> т.

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

Ускорение, эффективность, загрузка и качество

Рассмотрим параллельное выполнение программы со следующими характеристи-

-0(n) — общее число операций (команд), выполненных на «-процессорной системе;

-Т(п) — время выполнения О(п) операций на n-процессорной системе в виде числа квантов времени.

Вобщем случае Т(п) < О(п), если в единицу времени п процессорами выполняется более чем одна команда, где « > 2. Примем, что в однопроцессорной системе T(1)=о(1).

Ускорение (speedup), или точнее, среднее ускорение за счет параллельного выполнения программы — это отношение времени, требуемогодля выполнения наилучшего из последовательных алгоритмов на одном процессоре, и времени параллельного вычисления на п процессорах. Без учета коммуникационных издержек ускорение S(n) определяется как

Как правило, ускорение удовлетворяет условию S(n)<=п.

Эффективность (efficiency) n-процессорной системы — это ускорение на один процессор, определяемое выражением

4 8 4 Глава 10. Параллелизм как основа высокопроизводительныхвычислений

Эффективность обычно отвечает условию 1/п < =Е(п) < =п. Для более реалистичного описания производительности параллельных вычислений необходимо промоделировать ситуацию, когда параллельный алгоритм может потребовать больше операций, чем его последовательный аналог.

Довольно часто организация вычислений на п процессорах связана с существенными издержками. Поэтому имеет смысл ввести понятие избыточности (redundancy) в виде

Это отношение отражает степень соответствия между программным и аппаратнымпараллелизмом.Очевидно,что1<=R(n)<=п.

Определимещеоднопонятие,коэффициентполезногоиспользованияилиутилизации (utilization), как

Тогда можно утверждать, что

Рассмотрим пример. Пусть наилучший из известных последовательных алгоритмов занимает 8 с, а параллельный алгоритм занимает на пяти процессорах 2 с Тогда:

-S(n) =8/2 = А; - E(n)=4/5 = 0,8;

-R(n)= 1/0,8- 1=0,25.

Собственноеускорениеопределяетсяпутемреализациипараллельногоалгоритма на одном процессоре.

Если ускорение, достигнутое на п процессорах, равно и, то говорят, что алгоритм показываетлинейноеускорение.

В исключительных ситуациях ускорение S(n) может быть больше, чем и. В этих случаях иногда применяют термин суперлинейноеускорение. Данное явление имеет шансы на возникновение в двух следующих случаях:

-Последовательная программа может выполняться в очень маленькой памяти, вызывая свопинги (подкачки), или, что менее очевидно, может приводить к большему числу кэш-промахов, чем параллельная версия, где обычно каждая параллельная часть кода выполняется с использованием много меньшего набора данных.

-Другая причина повышенного ускорения иллюстрируется примером. Пусть нам

нужно выполнить логическую операцию А1 v A2 где как А1, так и А2 имеют значение «Истина» с вероятностью 50%, причем среднее время вычисленияАi, обо-

Метрики параллельных вычислений 4 8 5

значенное как T(Ai), существенно различается в зависимости от того, является ли результат истинным или ложным.

Пусть

Таким образом, параллельные вычисления на двух процессорах ведут к среднему ускорению:

Отметим, что суперлинейное ускорение вызвано жесткостью последовательной обработки, так как после вычисления еще нужно проверить А2.

Кфакторам, ограничивающим ускорение, следует отнести:

-Программные издержки. Даже если последовательные и параллельные алгоритмы выполняют одни и те же вычисления, параллельным алгоритмам присущи добавочные программные издержки — дополнительные индексные вычисления, неизбежно возникающие из-за декомпозиции данных и распределения их по процессорам; различные виды учетных операций, требуемые в параллельных алгоритмах, но отсутствующие в алгоритмах последовательных.

-Издержки из-за дисбаланса загрузки процессоров. Между точками синхронизации каждый из процессоров должен быть загружен одинаковым объемом работы, иначе часть процессоров будет ожидать, пока остальные завершат свои операции. Эта ситуация известна как дисбаланс загрузки. Таким образом, ускорение ограничивается наиболее медленным из процессоров.

-Коммуникационные издержки. Если принять, что обмен информацией и вычисления могут перекрываться, то любые коммуникации между процессорами снижают ускорение. В плане коммуникационных затрат важен уровень гранулярности, определяющий объем вычислительной работы, выполняемой между коммуникационными фазами алгоритма. Для уменьшения коммуникационных издержек выгоднее, чтобы вычислительные гранулы были достаточно крупными и доля коммуникаций была меньше.

Еще одним показателем параллельных вычислений служит качество параллельного выполнения программ — характеристика, объединяющая ускорение, эффективность и избыточность. Качество определяется следующим образом:

4 8 6 Глава 10. Параллелизм как основавысокопроизводительных вычислений

Поскольку как эффективность, так и величина, обратная избыточности, представляютсобойдроби, то Q(n) <=S(n).ПосколькуЕ(п) —этовсегдадробь, a R(n) - число между 1 и и, качество Q(n) при любых условиях ограничено сверху величиной ускорения S(n).

Закон Амдала

Приобретая для решения своей задачи параллельную вычислительную систему, пользователь рассчитывает на значительное повышение скорости вычислений за счет распределения вычислительной нагрузки по множеству параллельно работающих процессоров. В идеальном случае система из и процессоров могла бы ускорить вычисления в п раз, В реальности достичь такого показателя по ряду причин не удается. Главная из этих причин заключается в невозможности полного распараллеливания ни одной из задач. Как правило, в каждой программе имеется фрагменткода, который принципиальнодолженвыполняться последовательно итолько одним из процессоров. Это может быть часть программы, отвечающая за запуск задачи и распределение распараллеленного кода по процессорам, либо фрагмент программы, обеспечивающий операции ввода/вывода. Можно привести и другие примеры, но главное состоит в том, что о полном распараллеливании задачи говорить не приходится. Известные проблемы возникают и с той частью задачи, которая поддается распараллеливанию. Здесь идеальным был бы вариант, когда параллельные ветви программы постоянно загружали бы все процессоры системы, причем так, чтобы нагрузка на каждый процессор была одинакова. К сожалению, оба этих условия на практике трудно реализуемы. Таким образом, ориентируясь на параллельную ВС, необходимочеткосознавать,чтодобиться прямопропорционального числу процессоров увеличения производительности не удастся, и, естественно, встает вопрос о том, на какое реальное ускорение можно рассчитывать. Ответ на этот вопрос в какой-то мере дает закон Амдала.

Джин Амдал (Gene Amdahl) — один из разработчиков всемирно известной Системы IBM 360, в своей работе [48], опубликованной в 1967 году, предложил формулу, отражающую зависимость ускорения вычислений, достигаемого на многопроцессорной ВС, от числа процессоров и соотношения между последовательной и параллельной частями программы. Показателем сокращения времени вычислений служит такая метрика, как "ускорение". Напомним, что ускорение 5 — этоотношение времени Ts, затрачиваемого на проведение вычислений на однопроцессорной ВС (в варианте наилучшего последовательного алгоритма), ко времени T, решения той же задачи на параллельной системе (при использовании наилучшего параллельного алгоритма):

Оговорки относительно алгоритмов решения задачи сделаны, чтобы подчеркнуть тот факт, что для последовательного и параллельного решения лучшими мо-

Закон Амдала 4 8 7

гут оказаться разные реализации, а при оценке ускорения необходимо исходить именно из наилучших алгоритмов.

Проблема рассматривалась Амдалом в следующей постановке (рис. 10.2). Прежде всего, объем решаемой задачи с изменением числа процессоров, участвующих в ее решении-, остается неизменным. Программный код решаемой задачи состоит из двух частей: последовательной и распараллеливаемой. Обозначим долю операций, которыедолжны выполняться последовательно одним из процессоров, через f, где 0 <=f<= 1 (здесь доля понимается не по числу строк кода, а по числу реально выполняемых операций). Отсюда доля, приходящаяся на распараллеливаемую часть программы, составит 1 -f. Крайние случаи в значениях/соответствуют полностью параллельным (f= 0) и полностью последовательным (f- 1) программам. Распараллеливаемая часть программы равномерно распределяется по всем процессорам. ,

Рис. 10.2. КпостановкезадачивзаконеАмдала

С учетом приведенной формулировки имеем;

В результате получаем формулу Амдала, выражающую ускорение, которое может быть достигнуто на системе из п процессоров:

4 8 8 Глава 10. Параллелизм как основа высокопроизводительных вычислений

Формула выражает простую и обладающую большой общностью зависимость. Характер зависимости ускорения от числа процессоров и доли последовательной части программы показан на рис. 10.3.

Рис. 10.3. Графики зависимости ускорения от: а — доли последовательных вычислений; б — числа процессоров

Если устремить число процессоров к бесконечности, то в пределе получаем:

Это означает, что если в программе 10% последовательных операций (то есть /-0,1), то, сколько бы процессоров ни использовалось, убыстрения работы программы более чем в десять раз никак ни получить, да и то, 10 — это теоретическая верхняя оценка самого лучшего случая, когда никаких других отрицательных факторов нет. Следует отметить, что распараллеливание ведет к определенным издержкам, которых нет при последовательном выполнении программы. В качестве примера таких издержек можно упомянуть дополнительные операции, связанные с распределением программ по процессорам, обмен информацией между процессорами и т. д.

Закон Густафсона

Известную долю оптимизма в оценку, даваемую законом Амдала, вносят исследования, проведенные уже упоминавшимся Джоном Густафсоном из NASA Ames Research [115]. Решая на вычислительной системе из 1024 процессоров три больших задачи, для которых доля последовательного кода/лежала в пределах от 0,4 до 0,8%, он получил значения ускорения по сравнению с однопроцессорным вариантом, равные соответственно 1021,1020 и 1016. Согласно закону Амдала для данного числа процессоров и диапазона f, ускорение недолжно было превысить вели-

Закон Густафсона

4 8 9

чины порядка 201. Пытаясь объяснить это явление, Густафсон пришел к выводу, что причина кроется в ИСХОДНОЙ предпосылке, лежащей в основе закона Амдала: увеличение числа процессоров не сопровождается увеличением объема решаемой задачи. Реальное же поведение пользователей существенно отличается от такого представления. Обычно, получая в свое распоряжение более мощную систему, пользователь не стремится сократить время вычислений, а, сохраняя его практически неизменным, старается пропорционально мощности ВС увеличить объем решаемой задачи. И тут оказывается, что наращивание общего объема программы касается главным образом распараллеливаемой части программы. Это ведет к сокрашению значения f. Примером может служить решение дифференциального уравнения в частных производных. Если доля последовательного кода составляет 10% для 1000 узловых точек, то для 100 000 точек доля последовательного кода снизится до 0,1%. Сказанное иллюстрирует рис. 10.4, который отражает тот факт, что, оставаясь практически неизменной, последовательная часть в общем объеме увеличенной программы имеет уже меньший удельный вес.

Рис. 10.4. К постановке задачи взаконе Густафсона

Было отмечено, что в первом приближении объем работы, которая может быть произведена параллельно, возрастает линейно с ростом числа процессоров в системе. Для того чтобы оценить возможность ускорения вычислений, когда объем

4 9 0 Глава 10. Параллелизм какоснова высокопроизводительных вычислений

последних увеличивается с ростом количества процессоров в системе (при постоянстве общего времени вычислений), Густафсон рекомендует использовать выражение, предложенное Е. Барсисом (Е. Barsis):

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

Классификация параллельных вычислительных систем

Даже краткое перечисление типов современных параллельных вычислительных систем (ВС) дает понять, что для ориентирования в этом многообразии необходима четкая система классификации. От ответа на главный вопрос — что заложить восновуклассификации —зависит,насколькоконкретнаясистемаклассификации помогает разобраться с тем, что представляет собой архитектура ВС и насколько успешно данная архитектура позволяет решать определенный круг задач. Попытки систематизировать все множество архитектур параллельных вычислительных систем предпринимались достаточно давно и длятся по сей день, но к однозначным выводам пока не привели. Исчерпывающий обзор существующих систем классификации ВС приведен в [5].

Классификация Флинна

Среди всех рассматриваемых систем классификации ВС наибольшее признание получила классификация, предложенная в 1966 году М. Флинном [99, 100]. В ее основу положено понятие потока, под которым понимается последовательность элементов, команд или данных, обрабатываемая процессором. В зависимости от количества потоков команд и потоков данных Флинн выделяет четыре класса архитектур: SISD, MISD,SIMD, MIMD.

SISD

SISD (Single Instruction Stream/Single Data Stream) — одиночный поток команд и одиночный поток данных (рис. 10.5, а). Представителями этого класса являются, прежде всего, классические фон-неймановские ВМ, где имеется только один поток команд, команды обрабатываются последовательно и каждая команда инициирует одну операцию с одним потоком данных. То, что для увеличения скорости обработки команд и скорости выполнения арифметических операций может применяться конвейерная обработка, не имеетзначения, поэтому в класс SISD одновременно попадают как ВМ CDC 6600 со скалярными функциональными устройствами, так и CDC 7600 с конвейерными. Некоторые специалисты считают, что к SISD-системам можно причислить и векторно-конвейерные ВС, если рассматривать вектор как неделимый элемент данных для соответствующей команды.

Соседние файлы в папке Организация ЭВМ и систем