В компьютерной архитектуре закон Густафсона (или закон Густафсона–Барсиса [1] ) дает ускорение времени выполнения задачи, которое теоретически выигрывает от параллельных вычислений , используя гипотетический запуск задачи на одноядерной машине в качестве базовой линии. Другими словами, это теоретическое «замедление» уже распараллеленной задачи при запуске на последовательной машине. Он назван в честь ученого-компьютерщика Джона Л. Густафсона и его коллеги Эдвина Х. Барсиса и был представлен в статье Reevaluating Amdahl's Law в 1988 году. [2]
Густафсон оценил ускорение программы за счет использования параллельных вычислений следующим образом:
где
Альтернативно можно выразить с помощью :
Закон Густафсона устраняет недостатки закона Амдаля , который основан на предположении о фиксированном размере проблемы , то есть рабочей нагрузке выполнения, которая не меняется по отношению к улучшению ресурсов. Закон Густафсона вместо этого предполагает, что программисты стремятся увеличивать размер проблем, чтобы полностью использовать вычислительную мощность, которая становится доступной по мере улучшения ресурсов. [2]
Густафсон и его коллеги далее наблюдали из своих рабочих нагрузок, что время для последовательной части обычно не растет с ростом проблемы и масштаба системы, [2] то есть, фиксировано. Это дает линейную модель между количеством процессоров и ускорением с наклоном , как показано на рисунке выше (который использует разные обозначения: для и для ). Кроме того, масштабируется линейно с , а не экспоненциально в законе Амдаля. [2] С этими наблюдениями Густафсон «ожидает распространить [их] успех [в параллельных вычислениях] на более широкий спектр приложений и даже большие значения для ». [2]
Влияние закона Густафсона заключалось в смещении [ требуется цитата ] исследовательских целей для выбора или переформулирования проблем таким образом, чтобы решение более крупной проблемы за то же время было возможным. В некотором смысле закон переопределяет эффективность, из-за возможности того, что ограничения, накладываемые последовательной частью программы, могут быть преодолены путем увеличения общего объема вычислений.
Время выполнения программы, работающей на параллельной системе, можно разделить на две части:
Пример. — Компьютерная программа, обрабатывающая файлы с диска. Часть этой программы может сканировать каталог диска и создавать список файлов внутри памяти. После этого другая часть программы передает каждый файл в отдельный поток для обработки. Часть, которая сканирует каталог и создает список файлов, не может быть ускорена на параллельном компьютере, но часть, которая обрабатывает файлы, может.
Без потери общности пусть общее время выполнения на параллельной системе будет . Обозначим последовательное время как , а параллельное время как , где . Обозначим число процессоров как .
Гипотетически, при запуске программы на последовательной системе (только один процессор) последовательная часть по-прежнему занимает , а параллельная часть теперь занимает . Время выполнения на последовательной системе составляет:
При использовании в качестве базового значения ускорение для параллельной системы составит:
Подставляя или , можно получить несколько форм из предыдущего раздела.
Закон Амдаля предполагает, что вычислительные требования останутся прежними при увеличении вычислительной мощности. Другими словами, анализ тех же данных займет меньше времени при увеличении вычислительной мощности.
С другой стороны, Густафсон утверждает, что большая вычислительная мощность приведет к более тщательному и полному анализу данных: пиксель за пикселем или единица за единицей, а не в большем масштабе. Там, где было бы невозможно или непрактично моделировать воздействие ядерного взрыва на каждое здание, машину и их содержимое (включая мебель, прочность конструкции и т. д.), поскольку такой расчет занял бы больше времени, чем было доступно для предоставления ответа, увеличение вычислительной мощности побудит исследователей добавлять больше данных для более полной имитации большего количества переменных, что даст более точный результат.
Закон Амдаля выявляет ограничение, например, в способности нескольких ядер сокращать время, необходимое компьютеру для загрузки операционной системы и готовности к использованию. Если предположить, что процесс загрузки был в основном параллельным, учетверение вычислительной мощности в системе, загрузка которой заняла одну минуту, может сократить время загрузки до чуть более пятнадцати секунд. Но все большее и большее распараллеливание в конечном итоге не смогло бы ускорить загрузку, если бы какая-либо часть процесса загрузки была изначально последовательной.
Закон Густафсона утверждает, что четырехкратное увеличение вычислительной мощности вместо этого приведет к аналогичному увеличению ожиданий того, на что будет способна система. Если время загрузки в одну минуту приемлемо для большинства пользователей, то это отправная точка для увеличения возможностей и функций системы. Время, необходимое для загрузки операционной системы, будет тем же, т. е. одна минута, но новая система будет включать больше графических или удобных для пользователя функций.
Некоторые проблемы не имеют принципиально больших наборов данных. Например, обработка одной точки данных на гражданина мира увеличивается всего на несколько процентов в год. Принципиальный момент закона Густафсона заключается в том, что такие проблемы, скорее всего, не будут наиболее плодотворными применениями параллелизма.
Алгоритмы с нелинейным временем выполнения могут столкнуться с трудностями в использовании преимуществ параллелизма, «раскрываемого» законом Густафсона. Снайдер [3] указывает на алгоритм, который означает, что удвоение параллелизма дает всего лишь около 26% увеличения размера проблемы. Таким образом, хотя и возможно занять огромный параллелизм, это может дать мало преимуществ по сравнению с исходным, менее параллельнм решением — однако на практике все еще наблюдаются значительные улучшения.
Хилл и Марти [4] также подчеркивают, что методы ускорения последовательного выполнения все еще необходимы, даже для многоядерных машин. Они указывают, что локально неэффективные методы могут быть глобально эффективными, если они сокращают последовательную фазу. Кроме того, Ву и Ли [5] изучили влияние энергии и мощности на будущие многоядерные процессоры на основе закона Амдаля, показав, что асимметричный многоядерный процессор может достичь наилучшей возможной энергоэффективности , активируя оптимальное количество ядер, учитывая, что величина параллелизма известна до выполнения.
Аль-Хаянни, Рафиев и др. разработали новые модели ускорения и потребления энергии, основанные на общем представлении гетерогенности ядра, называемом гетерогенностью нормальной формы, которая поддерживает широкий спектр гетерогенных многоядерных архитектур. Эти методы моделирования направлены на прогнозирование энергоэффективности системы и диапазонов производительности, а также облегчают исследования и разработки на уровне аппаратного и системного программного обеспечения. [6] [7]