Закон Амдала - Amdahls law

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

В компьютерная архитектура, Закон Амдала (или же Аргумент Амдала[1]) - формула, которая дает теоретическое ускорение в задержка выполнения задачи при фиксированной нагрузка чего можно ожидать от системы, ресурсы которой улучшены. Он назван в честь компьютерного ученого. Джин Амдал, и был представлен на AFIPS Весенняя объединенная компьютерная конференция 1967 г.

Закон Амдала часто используется в параллельные вычисления для прогнозирования теоретического ускорения при использовании нескольких процессоров. Например, если программе требуется 20 часов для завершения с использованием одного потока, но часовая часть программы не может быть распараллелена, поэтому только оставшиеся 19 часов (п = 0.95) времени выполнения можно распараллелить, то независимо от того, сколько потоков посвящено параллельному выполнению этой программы, минимальное время выполнения не может быть меньше одного часа. Следовательно, теоретическое ускорение ограничено не более чем в 20 раз производительностью одного потока, .

Определение

Закон Амдала можно сформулировать следующим образом:

куда

  • Sзадержка теоретическое ускорение выполнения всей задачи;
  • s - количество нитей, по которым разделяется параллельная часть;
  • п - это доля времени выполнения, которую изначально занимала часть, извлекающая выгоду из улучшенных ресурсов.

Более того,

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

Закон Амдала применим только к случаям, когда размер проблемы фиксирован. На практике по мере того, как становится доступным больше вычислительных ресурсов, они, как правило, используются для решения более крупных задач (больших наборов данных), и время, затрачиваемое на параллелизируемую часть, часто растет намного быстрее, чем при изначально последовательной работе. В этом случае, Закон Густафсона дает менее пессимистичную и более реалистичную оценку параллельной производительности.[2]

Вывод

Задачу, выполняемую системой, ресурсы которой улучшены по сравнению с исходной аналогичной системой, можно разделить на две части:

  • часть, которая не получает выгоды от улучшения ресурсов системы;
  • часть, которая получает выгоду от улучшения ресурсов системы.

Примером может служить компьютерная программа, обрабатывающая файлы с диска. Часть этой программы может сканировать каталог на диске и создавать список файлов внутри памяти. После этого другая часть программы передает каждый файл в отдельный нить для обработки. Часть, которая сканирует каталог и создает список файлов, не может быть ускорена на параллельном компьютере, но часть, обрабатывающая файлы, может.

Время выполнения всей задачи до улучшения ресурсов системы обозначается как . Он включает время выполнения той части, которая не выиграет от улучшения ресурсов, и время выполнения той, которая выиграет от этого. Доля времени выполнения задачи, которая выиграет от улучшения ресурсов, обозначается как . То, что касается части, которая не получит от этого выгоды, поэтому . Потом:

Именно выполнение той части, которая выигрывает от улучшения ресурсов, ускоряется фактором после улучшения ресурсов. Следовательно, время выполнения той части, которая от этого не выигрывает, остается прежним, а время выполнения той части, которая от этого выигрывает, становится:

Теоретическое время выполнения всей задачи после улучшения ресурсов тогда:

Закон Амдала дает теоретические ускорение в задержка выполнения всей задачи при фиксированной нагрузке , что дает

Параллельные программы

Если 30% времени выполнения может быть предметом ускорения, п будет 0,3; если улучшение делает пораженную часть вдвое быстрее, s будет 2. Закон Амдала гласит, что общее ускорение применения улучшения будет:

Например, предположим, что нам дана последовательная задача, которая разделена на четыре последовательных части, процент времени выполнения которых равен п1 = 0.11, п2 = 0.18, п3 = 0.23, и п4 = 0.48 соответственно. Затем нам говорят, что первая часть не ускорена, поэтому s1 = 1, а вторая часть ускорена в 5 раз, поэтому s2 = 5, третья часть ускорена в 20 раз, поэтому s3 = 20, а 4-я часть ускорена в 1,6 раза, поэтому s4 = 1.6. Используя закон Амдала, общее ускорение составляет

Обратите внимание на то, что 5-кратное и 20-кратное ускорение 2-й и 3-й частей соответственно не сильно влияет на общее ускорение, когда 4-я часть (48% времени выполнения) ускоряется только в 1,6 раза.

Последовательные программы

Предположим, что задача состоит из двух независимых частей, А и B. Часть B занимает примерно 25% времени всего вычисления. Очень усердно работая, можно сделать эту часть в 5 раз быстрее, но это лишь немного сокращает время всего вычисления. Напротив, для изготовления детали может потребоваться меньше работы. А выполнять вдвое быстрее. Это сделает вычисления намного быстрее, чем при оптимизации части B, хотя часть B 's ускорение больше по коэффициенту (5 раз против 2 раза).

Например, с серийной программой из двух частей А и B для которого ТА = 3 с и ТB = 1 с,

  • если часть B заставлен работать в 5 раз быстрее, то есть s = 5 и п = ТB/(ТА + ТB) = 0.25, тогда
  • если часть А заставлен работать в 2 раза быстрее, то есть s = 2 и п = ТА/(ТА + ТB) = 0.75, тогда

Поэтому составляя часть А бежать в 2 раза быстрее лучше, чем делать деталь B бегать в 5 раз быстрее. Процентное улучшение скорости можно рассчитать как

  • Улучшающая часть А в 2 раза увеличивает общую скорость программы в 1,60 раза, что делает ее на 37,5% быстрее, чем исходное вычисление.
  • Однако улучшающая часть B с коэффициентом 5, что, по-видимому, требует больше усилий, даст общий коэффициент ускорения только 1,25, что на 20% быстрее.

Оптимизация последовательной части параллельных программ

Если непараллелизируемая часть оптимизирована с коэффициентом , тогда

Из закона Амдала следует, что ускорение за счет параллелизма определяется выражением

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

Когда ,

Если , и , тогда:

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

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

Из закона Амдала следует, что ускорение за счет параллелизма определяется выражением

Приведенный выше вывод согласуется с анализом Якоба Дженкова относительно компромисса между временем выполнения и ускорением.[3]

Отношение к закону убывающей отдачи

Закон Амдала часто смешивают с закон убывающей доходности, тогда как только частный случай применения закона Амдала демонстрирует закон убывающей отдачи. Если выбрать оптимально (с точки зрения достигнутого ускорения), что нужно улучшить, то по мере улучшения можно будет увидеть монотонно убывающие улучшения. Если, однако, выбрать неоптимальный компонент после улучшения субоптимального компонента и перехода к улучшению более оптимального компонента, можно увидеть увеличение прибыли. Обратите внимание, что часто рационально улучшать систему в «неоптимальном» в этом смысле порядке, учитывая, что некоторые улучшения сложнее или требуют большего времени на разработку, чем другие.

Закон Амдала действительно представляет закон убывающей отдачи, если при рассмотрении того, какого рода отдачу можно получить, добавляя больше процессоров к машине, если выполняется вычисление фиксированного размера, которое будет использовать все доступные процессоры в полную силу. Каждый новый процессор, добавленный в систему, будет добавлять меньше полезной мощности, чем предыдущий. Каждый раз, когда количество процессоров удваивается, коэффициент ускорения будет уменьшаться, поскольку общая пропускная способность приближается к пределу 1 / (1 -п).

Этот анализ не учитывает другие потенциальные узкие места, такие как пропускная способность памяти и пропускная способность ввода / вывода. Если эти ресурсы не масштабируются вместе с количеством процессоров, то простое добавление процессоров дает еще меньшую отдачу.

Следствием закона Амдала является то, что для ускорения реальных приложений, которые имеют как последовательные, так и параллельные части, гетерогенные вычисления техники требуются.[4] Например, гетерогенный процессор CPU-GPU может обеспечивать более высокую производительность и энергоэффективность, чем процессор только CPU или GPU.[5]

Смотрите также

Рекомендации

  1. ^ Роджерс, Дэвид П. (июнь 1985 г.). «Улучшения в проектировании многопроцессорных систем». Новости компьютерной архитектуры ACM SIGARCH. Нью-Йорк, Нью-Йорк, США: ACM. 13 (3): 225–231 [стр. 226]. Дои:10.1145/327070.327215. ISBN  0-8186-0634-7. ISSN  0163-5964.CS1 maint: ref = harv (связь)
  2. ^ МакКул, Майкл; Рейндерс, Джеймс; Робисон, Арка (2013). Структурированное параллельное программирование: шаблоны для эффективных вычислений. Эльзевир. п. 61. ISBN  978-0-12-415993-8.
  3. ^ http://tutorials.jenkov.com/java-concurrency/amdahls-law.html
  4. ^ Хилл, Марк Д .; Марти, Майкл Р. (2008). «Закон Амдала в эру многоядерности». Компьютер. 41 (7): 33–38. Дои:10.1109 / MC.2008.209.
  5. ^ Миттал, Спарш; Веттер, Джеффри С. (2015). "Обзор методов гетерогенных вычислений CPU-GPU". Опросы ACM Computing. 47 (4). 69. Дои:10.1145/2788396.

дальнейшее чтение

внешняя ссылка