Законы Амдала и Густафсона

реклама
Законы Амдала и Густафсона
Мокшин Павел, 12225
Ускорение (speedup)
Speedup =
𝑇(1)
𝑇(𝑁)
 Ускорение – отношение времени работы
последовательного алгоритма T(1) ко времени
работы параллельного алгоритма T(N).
 N – число параллельно работающих элементов
(например, ядер, процессоров)
Ускорение (speedup)
 Если последовательный алгоритм работает 6720
секунд, а параллельный – 126.7 секунд, то
ускорение в этом случае составит
6720/126.7 ≈ 53x
Законы Амдала и Густафсона
 Данные законы ориентированы на
крупнозернистый параллелизм
 Как ускорится программа на большом количестве
процессоров? Каков предел ускорения?
Закон Амдала (Amdahl law)
𝑆𝑝𝑒𝑒𝑑𝑢𝑝 ⩽
1
𝑃
1 −𝑃 +
𝑁
 P – доля работы, которую можно распараллелить
 N – число параллельно работающих элементов
 Закон предполагает линейное ускорение в
зависимости от количества элементов
Доказательство
 Speedup =
𝑇(1)
𝑇(𝑁)
=
𝑇(1)
𝑇 1 ∙ 1−𝑃
𝑃 ∙𝑇(1)
+ 𝑁
=
1
𝑃
1 −𝑃 + 𝑁
 Сначала пользуемся линейностью ускорения и тем
что T(N)=T(1) для нераспараллеливаемой части, а
затем просто сокращаем T(1)
Закон Амдала
 𝑆𝑝𝑒𝑒𝑑𝑢𝑝 ⩽
1
𝑃
1 −𝑃 + 𝑁
 Если устремить число параллельных элементов к
бесконечности, то получим:
 lim 𝑆𝑝𝑒𝑒𝑑𝑢𝑝 =
𝑁→∞
1
1 −𝑃
=
1
S
S – нераспараллеливаемая часть программы
Что отсюда следует?
Закон Амдала
 Предположим, что в нашей задаче можно
распараллелить 3/4 всех вычислений
 Тогда по закону Амдала, в лучшем случае мы
получим ускорение:
1
1
lim 𝑆𝑝𝑒𝑒𝑑𝑢𝑝 =
=
=4
𝑁→∞
1 − 𝑃 1 − 3/4
 То есть сколько ядер мы бы ни взяли, ускорение не
превысит 4 раза! Потенциал распараллеливания
сильно зависит от доли последовательной части
Критика закона Амдала
 Игнорирование издержек на коммуникацию,
синхронизацию, создание потоков, дисбаланс
загрузки процессоров
 Закон предполагает, что объем данных для
последовательного и параллельного алгоритма
одинаков
Закон Густафсона
 Густафсон установил, что исследователь, получая
в своё распоряжение более мощную технику,
старается использовать ее для более
качественного решения задачи, например, с
большей точностью
 При этом возрастает объём задачи, а доля
последовательной части задачи уменьшается
Закон Густафсона
 Вместо вопроса об ускорении на N процессорах
рассмотрим вопрос о замедлении вычислений при
переходе на один процессор:
 Scaled speedup =
𝑇(1)
𝑇(𝑁)
=
𝑇 𝑁 ∙ 1−𝑃 +𝑁∙𝑃∙𝑇(𝑁)
𝑇 𝑁 ∙ 1−𝑃 +𝑃∙𝑇(𝑁)
=
= 1 + (𝑁 − 1) ∙ 𝑃
 Для закона Густафсона ускорение называется
ускорением масштабирования
Закон Густафсона
 Scaled speedup = 1 + 𝑁 − 1 ∙ 𝑃
 Как видно, ускорение масштабирования линейно
зависит от количества процессоров
 Недостаток: закон применим не всегда. Нам не
всегда нужно увеличивать объем задачи при росте
количества процессоров
Сравнение оценок
 Сравним оценки Амдала и Густафсона для
некоторой задачи
 Пусть P = 3/4, N = 16. Тогда:
1
1
64
𝑆𝑝𝑒𝑒𝑑𝑢𝑝 =
=
=
≈ 3.368𝑥
1 3
3/4
19
+
1 − 3/4 +
4 64
16
3
4
𝑆𝑐𝑎𝑙𝑒𝑑 𝑠𝑝𝑒𝑒𝑑𝑢𝑝 = 1 + 16 − 1 ∙ =
49
4
≈ 12.25𝑥
Вывод
 Были рассмотрены законы Амдала и Густафсона
 Если рассматривать максимальное ускорение для
фиксированного объема данных, то оно
определяется законом Амдала
 Если объем данных растет пропорционально
количеству процессоров, то ускорение
определяется законом Густафсона
 Закон Густафсона является гораздо более
оптимистичным, но не всегда применим на
практике
Скачать