Введение

Формула в компьютерной архитектуре

В компьютерной архитектуре закон Амдаля (или аргумент Амдаля) — это формула, определяющая теоретическое ускорение времени выполнения задачи при фиксированной рабочей нагрузке, которое можно ожидать от системы с улучшенными ресурсами. Он утверждает, что «общее улучшение производительности, достигаемое оптимизацией одной части системы, ограничено долей времени, в течение которой эта улучшенная часть фактически используется». Закон назван в честь учёного-компьютерщика Джина Амдаля и был представлен на весенней объединенной компьютерной конференции Американской федерации обществ обработки информации (AFIPS) в 1967 году. Закон Амдаля часто используется в параллельных вычислениях для прогнозирования теоретического ускорения при использовании нескольких процессоров. Например, если программе требуется 20 часов для завершения при использовании одной нити, но одна часть программы, занимающая 1 час, не может быть параллелизована, то только оставшиеся 19 часов (1-p = 0,95) времени выполнения могут быть распараллелены. Следовательно, независимо от количества потоков, выделенных для параллельного выполнения этой программы, минимальное время выполнения всегда будет больше 1 часа. Таким образом, теоретическое ускорение будет менее чем в 20 раз превышать производительность одной нити.

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

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

Например, предположим, что нам дана последовательная задача, которая разделена на четыре последовательные части, доли времени выполнения которых составляют p1 = 0,11, p2 = 0,18, p3 = 0,23 и p4 = 0,48 соответственно. Затем нам сообщают, что первая часть не ускорена, то есть s1 = 1, в то время как вторая часть ускорена в 5 раз, то есть s2 = 5, третья часть ускорена в 20 раз, то есть s3 = 20, а четвертая часть ускорена в 1,6 раза, то есть s4 = 1,6. Используя закон Амдаля, общее ускорение составит

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

Отношение к закону уменьшающейся прибыли

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