- •Московский Государственный Университет им. Н.Э.Баумана
- •1.Введение
- •1.1.Предмет и цель курса лекций.
- •1.2.Некоторые необходимые определения и понятия.
- •2.Задачи, алгоритмы
- •2.1.Задача
- •2.2.Алгоритм
- •3.Нормальные алгорифмы Маркова (нам).
- •4.Машины Тьюринга
- •4.1. Одноленточная мт
- •4.2.Многоленточная мт
- •4.3.Недетерминированная мт
- •4.4.Оракульная мт
- •5.Равнодоступная адресная машина (рам) и некоторые другие подходы.
- •6.Сравнение различных формальных схем.
- •6.1.Кодировки входных данных.
- •6.2.О мерах сложности
- •6.3.Теоремы сравнения
- •6.4.Полиномиальные и неполиномиальные оценки сложности
- •7.Сложность алгоритмов некоторых задач.
- •7.1.Задача нахождения максимального числа.
- •7.2.Задача сортировки.
- •7.3.Задача о камнях.
- •7.4.Простота числа.
- •7.5.Задача о кратчайшем (минимальном) остове (остовном дереве).
- •7.6.Задача коммивояжера.
- •7.7.Задача о кратчайшем пути.
- •7.8.Задача о выполнимости кнф (кнф-выполнимость)
- •8.Схемы из функциональных элементов. Схемная сложность.
- •8.1.Схемы из функциональных элементов
- •8.2.Оценки сложности сфэ.
- •9.Теория np-полноты
- •9.1.Классы p и np.
- •9.2.Сводимость задач
- •9.2.1.Смысл сводимости
- •9.2.2.Полиномиальная сводимость
- •9.2.3.Сводимость по Тьюрингу
- •9.3.Теорема Кука
- •9.4.Структура класса np и некоторые выводы
- •10.Иерархия сложности
- •10.1. Классы np и co-np
- •10.2.Классы p-space и np-space. Элементы исчисления предикатов.
- •10.2.1.Классы сложности p-space и np-space
- •10.2.2.Логика предикатов и pspace –полные задачи.
- •10.3.Классы p и p/poly.
- •10.4.Некоторые результаты
- •11.Подходы к решению np-полных задач
- •11.2.Приближенные алгоритмы
- •11.3.Полиномиально-разрешимые частные случаи np-полных задач
- •11.4.Методы направленного перебора
- •12.Параллельные вычисления
- •12.1.Классификация моделей параллельных вычислений.
- •12.2.Примеры способов параллельной обработки данных
- •12.3.Вопросы производительности параллельных вычислений
- •12.3.1.Основной вопрос сложности параллельных вычислений
- •12.3.2.Асимптотическая производительность
- •12.3.3.Гипотеза Минского.
- •12.4.Пример параллельного вычисления.
- •13.Коммуникационная сложность
- •14.Рекомендованная литература
12.3.2.Асимптотическая производительность
Как отмечалось выше, основным признаком векторно-конвейерных систем является наличие конвейерных функциональных устройств, содержащих ряд конвейеров операций (например, конвейер сложения вещественных чисел, конвейер умножения таких же чисел и т.п.). Поэтому оценка производительности векторно-конвейерных систем основана на оценке производительности конвейеров операций.
Методику оценки производительности конвейеров операций рассмотрим на примере конвейера операции сложения. Положим, что имеется l-ступенчатый конвейер операции сложения и пусть все ступени конвейера операций требуют одинакового времени выполнения Δt. Пусть s Δt -фиксированное время запуска конвейера, lΔt - время "разгона" конвейера. Тогда для выполнения операции сложения векторов X=(x1,…,xn) и Y=(y1,…,yn) требуется время Tконв=(s+l+n) Δt.
После запуска конвейера и его "разгона" конвейер выдает результат через каждый такт Δt. Т.е. максимальная скорость выдачи результатов конвейером (максимальное быстродействие) равна (r∞)конв=1/Δt. Это принято называть асимптотическим быстродействием. Быстродействие конвейера приближается к асимптотическому быстродействию в случае, когда в формуле Tконв=(s+l+n) Δt можно пренебречь слагаемыми (s+l) Δt. Эта ситуация имеет место когда длина обрабатываемых векторов n много больше величины s+l.
Аналогичная ситуация имеет место для конвейеров любых операций. Условно принято говорить, что асимптотическое быстродействие конвейера операций достигается на векторах бесконечной длины.
При работе конвейера в последовательном режиме, очевидно, максимальная скорость выдачи результатов равна (r∞)посл=1/lΔt. Таким образом, конвейерная обработка увеличивает производительность вычислительной системы в l раз (на векторах бесконечной длины).
Рассмотрим оценку асимптотической производительности векторно-параллельных систем и MIMD-систем рассмотрим на примере операции сложения векторов сложения векторов X=(x1,…,xn) и Y=(y1,…,yn) на s-процессорной системе. Время выполнения этой операции как на векторно-параллельной системе, так на MIMD-системе можно оценить суммой времени коммуникации Tcom и времени вычислений Tcal. Пусть d - диаметр коммуникационной сети системы, производительность каналов межпроцессорного обмена равна v байт/ сек, а время операции сложения двух чисел на одном процессоре – τ сек. Тогда Tcom =O(dnv/s), Tcal =nτ/s.
Если пренебречь коммуникационными расходами, то получаем предельно возможное время вычислений Tcal /n. Таким образом, максимальная скорость выдачи результатов s-процессорной векторно-параллельной системой и MIMD-системой (максимальное быстродействие) равна (r∞)парал= 1/ Tcal =s/ τ.
Эту величину также принято называть асимптотическим быстродействием. Быстродействие векторно-параллельной системы и MIMD-системы приближается к асимптотическому быстродействию в случае, когда можно пренебречь коммуникационной составляющей и когда величина n кратна s. При сложении векторов на одном процессоре системы максимальная скорость выдачи результатов равна, очевидно, (r∞)парал= 1 / τ.
Таким образом, параллельное сложение векторов на векторно-параллельных и MIMD-системах увеличивает производительность максимум в s раз, о чем мы и говорили в самом начале раздела. Аналогичная ситуация имеет место при выполнении на векторно-параллельных системах или MIMD-системах любых бинарных операций.
Важной характеристикой параллельных вычислительных систем является n1/2 - длина векторов, на которых достигается половина асимптотического быстродействия системы. Эта величина называется длиной полупроизводительности. Смыслы асимптотического быстродействия и длины полупроизводительности различны. Асимптотическое быстродействие, главным образом, характеризует технологию изготовления ЭВМ, в то время как длина полупроизводительности представляет собой критерий степени параллелизма системы. Относительная производительность различных алгоритмов на данной параллельной вычислительной системе определяется длиной полупроизводительности.
Пусть n –средняя длина обрабатываемого вектора, а σ= n1/2 /n. Чем больше эта величина, тем меньше эффект от распараллеливания.
Пример.(Из [10]).
Рассматривается операция перемножения двух матриц на параллельных вычислительных системах CYBER-205 и CRAY-1. Результаты приведены в таблице.
ЭВМ |
Операция |
(r∞)парал [MFLOPS] |
n1/2 |
CYBER-205 |
Сложение векторов |
100 |
102 |
CYBER-205 |
Скалярное произведение |
100 |
116 |
CRAY-1 |
Перемножение двух матриц |
153 |
7 |
Пусть средняя длина обрабатываемых векторов n равна 100. Тогда для решения рассматриваемой задачи система CRAY-1 гораздо более эффективна по сравнению с системой CYBER-205.
Также важными характеристиками производительности вычислительных систем являются параметры, учитывающие организацию топологии процессоров: связи между устройствами, отображаемыми в виде ориентированного графа, в котором вершины обозначают устройства, а дуги - связи между ними . Предположим, дуга графа системы идет из i-го устройства в j-е. Поскольку результат i-го устройства является аргументом j-го, количество операций, выполняемых j-м устройством, не может более, чем на 1, отличаться от количества операций, реализованных i-м устройством: N -1≤ Nj ≤Nt +1. Если связный граф содержит q дуг, k-е устройство за время T выполнило Nk операций, а l-е - Nl операций, то отсюда вытекает, что
Nl - q ≤ Nk ≤ Nl + q для любых k, l, 1 < k, l < s.
Если пиковые производительности упорядочены по возрастанию, то
(N1 -q)s + q ≤< tNt ≤ (N1 +q)s -q.
Разделив все части неравенств на T получим 1s-(s-1)q/T≤r≤1s+(s-1)q/T.
Слагаемые q(s -1)/T при увеличении T стремятся к нулю. Это означает, что для системы из s устройств с пиковыми производительностями 1≤2≤…≤s описываемой связным графом, максимальная производительность определяется как rmax=s1. Тогда максимальная загруженность системы pmax= rmax / , а максимальное ускорение Rmax= rmax /s .
Мы вновь получили подтверждение вышеприведенным выводам. Иногла эти выводы называются законами Амдала.
1-й закон Амдала. Производительность вычислительной системы, состоящей из связанных между собой устройств, определяется самым непроизводительным устройством.
2-й закон Амдала:
Пусть система состоит из s одинаковых устройств, а n операций из общего числа операций алгоритма N могут выполняться только последовательно, тогда максимально возможное ускорение равно s/(ns/N + 1- n/N).
Эта формула используется для прогноза возможного ускорения. Например, в случае, когда половина операций не поддаются распараллеливанию, максимально достижимое ускорение в случае использования 2 процессоров составит около 1,33, для 10 процессоров - менее 1,82, а для 100 процессоров - около 1,98. В данном примере наиболее «узким» местом является сам алгоритм решения задачи, а основные усилия должны быть направлены на поиск другой формулировки задачи, допускающей более высокую степень параллелизма.
Оценку максимально достижимого ускорения параллельного алгоритма можно построить также исходя из имеющейся доли последовательных расчетов, задаваемой в виде: g = τn/(τn+τN-n/s), τn и τN-n - время, необходимое для выполнения последовательной и параллельной частей соответственно.
С учетом введенных обозначений время решения задачи на одном и s процессорах соответственно T1 = τn + τN-n, Ts = τn+τN-n/s. С другой стороны, для величины g можно записать: τn = g(τn+τN-n/s); τN-n=(1-g)s(τn+τN-n/s).
Отсюда следует, так называемый, закон Густавсона – Барсиса:
T1/Ts=g+(1-g)s=s+(1-s)g.
Если процессоры - ФУ конвейерного типа, то операция разбивается на последовательность микроопераций. Каждую микрооперацию выделяют в отдельную часть устройства и располагают их в порядке выполнения так, чтобы входные аргументы прошли через все ступени конвейера.
Предположим, что конвейерное устройство состоит из l ступеней, срабатывающих за один такт. Тогда, например, для сложения двух векторов из n элементов потребуется l + n -1 тактов. Если при этом используются также векторные команды, то потребуется (возможно, несколько) дополнительных тактов для их инициализации. Эта величина учитывает также возможные пропуски тактов выдачи результатов на выходе конвейера, вследствие необходимости выполнения вспомогательных операций, связанных с организацией конвейера.
С использованием введенных обозначений запишем соотношение для оценки производительности конвейера: E=n/t=1/[τ+(σ+l-1)τ/n].
где τ- время такта работы компьютера.
Обычно вычислительные системы строятся с использованием одновременно всех типов устройств: скалярных, векторных конвейерных. В частности, первый векторно-конвейерный компьютер Cray-1 (пиковая производительность 160 Mflops) имел 12 конвейерных функциональных устройств, причем все функциональные устройства могли работать одновременно и независимо друг от друга.
Для любого количества используемых процессоров - s справедлива следующая верхняя оценка для времени выполнения параллельного алгоритма
Ts<T∞+T1/s.
Действительно, пусть H∞ есть расписание для достижения минимально возможного времени выполнения T∞. Для каждой итерации τ: 0<τ< T∞ выполнения расписания H∞ обозначим через пт количество операций, выполняемых в ходе итерации τ. Расписание выполнения алгоритма с использованием s процессоров может быть построено следующим образом. Выполнение алгоритма разделим на T∞ шагов; на каждом шаге т следует выполнить все пт операций, которые выполнялись на итерации т расписания H∞. Эти операции могут быть выполнены не более чем за ]nτ/s[ итераций при использовании s процессоров. Как результат, время выполнения алгоритма Ts может быть оценено следующим образом:
Ts = ]nτ/s[ < ]1+nτ/s[ = T1/s+ T∞.
Приведенная схема рассуждений, по существу, дает практический способ построения расписания параллельного алгоритма. Первоначально может быть построено расписание без учета ограниченности числа используемых процессоров (расписание для паракомпьютера). Затем, в соответствии с описанной выше схемой, может быть построено расписание для конкретного количества процессоров.