Ускорение

редактировать
Процесс повышения производительности между двумя системами, решающий одну и ту же проблему
Искать speedup в Викисловарь, бесплатный словарь.

В компьютерной архитектуре, ускорение - это число, которое измеряет относительную производительность двух системы, обрабатывающие ту же проблему. С технической точки зрения, это повышение скорости выполнения задачи, выполняемой на двух аналогичных архитектурах с разными ресурсами. Понятие ускорения было установлено законом Амдала, в котором особое внимание уделялось параллельной обработке. Однако ускорение можно использовать в более общем плане, чтобы показать влияние на производительность после любого увеличения ресурсов.

Содержание

  • 1 Определения
    • 1.1 Ускорение задержки
    • 1.2 Ускорение пропускной способности
  • 2 Примеры
    • 2.1 Использование времени выполнения
    • 2.2 Использование циклов на инструкцию и инструкций на цикл
  • 3 Дополнительные сведения
  • 4 Суперлинейное ускорение
  • 5 Ссылки
  • 6 См. Также

Определения

Ускорение может быть определено для двух разных типов величин: задержка и пропускная способность.

Задержка архитектуры обратно пропорциональна скорости выполнения задачи:

L = 1 v = TW, {\ displaystyle L = {\ frac {1} {v}} = { \ frac {T} {W}},}L = {\ frac {1} {v}} = {\ frac {T} { W}},

где

  • v - скорость выполнения задачи;
  • T - время выполнения задачи;
  • W - рабочая нагрузка выполнения задачи.

Пропускная способность архитектуры - это скорость выполнения задачи:

Q = ρ v A = ρ AWT = ρ AL, {\ displaystyle Q = \ rho vA = {\ frac { \ rho AW} {T}} = {\ frac {\ rho A} {L}},}Q = \ rho vA = {\ frac {\ rho AW} {T}} = {\ frac {\ rho A} {L}},

где

  • ρ - плотность выполнения (например, количество этапов в конвейере команд для конвейерного архитектура);
  • A - производительность (например, количество процессоров для параллельной архитектуры).

Задержка часто измеряется в секундах на единицу рабочей нагрузки выполнения. Пропускная способность часто измеряется в единицах рабочей нагрузки выполнения в секунду. Другой единицей пропускной способности является инструкций на цикл (IPC), а обратная единица, циклов на инструкцию (CPI), является другой единицей задержки.

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

Ускорение задержки

Ускорение задержки определяется по следующей формуле:

S latency = L 1 L 2 = T 1 W 2 T 2 W 1, {\ displaystyle S_ { \ text {latency}} = {\ frac {L_ {1}} {L_ {2}}} = {\ frac {T_ {1} W_ {2}} {T_ {2} W_ {1}}},}S_ { \ text {latency}} = {\ frac {L_ {1}} {L_ {2}}} = {\ frac {T_ {1} W_ {2}} {T_ {2} W_ {1}}},

где

  • Sзадержка - это ускорение задержки архитектуры 2 по сравнению с архитектурой 1;
  • L1- задержка архитектуры 1;
  • L2- задержка архитектуры 2.

Ускорение задержки можно предсказать по закону Амдала или закону Густафсона.

Ускорение пропускной способности

Ускорение пропускной способности определяется по следующей формуле:

S пропускная способность Знак равно Q 2 Q 1 знак равно ρ 2 A 2 T 1 W 2 ρ 1 A 1 T 2 W 1 = ρ 2 A 2 ρ 1 A 1 S задержка, {\ displaystyle S _ {\ text {throughput}} = {\ frac { Q_ {2}} {Q_ {1}}} = {\ frac {\ rho _ {2} A_ {2} T_ {1} W_ {2}} {\ rho _ {1} A_ {1} T_ {2 } W_ {1}}} = {\ frac {\ rho _ {2} A_ {2}} {\ rho _ {1} A_ {1}}} S _ {\ text {latency}},}S _ {\ text {throughput}} = {\ frac {Q_ {2}} {Q_ {1}}} = {\ frac {\ rho _ { 2} A_ {2} T_ {1} W_ {2}} {\ rho _ {1} A_ {1} T_ {2} W_ {1}}} = {\ frac {\ rho _ {2} A_ {2 }} {\ rho _ {1} A_ {1}}} S _ {\ text {latency}},

где

  • Sпропускная способность - это увеличение пропускной способности архитектуры 2 по сравнению с архитектурой 1;
  • Q1- это пропускная способность архитектуры 1;
  • Q2- пропускная способность архитектуры 2.

Примеры

Использование времени выполнения

Мы проверяем эффективность предсказателя ветвления при выполнении программа. Сначала мы выполняем программу со стандартным предсказателем ветвления на процессоре, что дает время выполнения 2,25 секунды. Затем мы выполняем программу с нашим модифицированным (и, надеюсь, улучшенным) предсказателем ветвления на том же процессоре, что дает время выполнения 1,50 секунды. В обоих случаях рабочая нагрузка на выполнение одинакова. Используя нашу формулу ускорения, мы знаем, что

S latency = L old L new = 2,25 с 1,50 с = 1,5. {\ displaystyle S _ {\ text {latency}} = {\ frac {L _ {\ text {old}}} {L _ {\ text {new}}}} = {\ frac {2.25 ~ \ mathrm {s}} { 1.50 ~ \ mathrm {s}}} = 1.5.}S _ {\ text {latency}} = {\ frac {L _ {\ text { old}}} {L _ {\ text {new}}}} = {\ frac {2.25 ~ \ mathrm {s}} {1.50 ~ \ mathrm {s}}} = 1.5.

Наш новый предсказатель ветвлений обеспечил ускорение в 1,5 раза по сравнению с исходным.

Использование циклов на инструкцию и инструкций на цикл

Мы также можем измерить ускорение в циклах на инструкцию (CPI), что является задержкой. Сначала мы выполняем программу со стандартным предсказателем ветвления, что дает CPI, равное 3. Затем мы выполняем программу с нашим модифицированным предсказателем ветвления, что дает CPI, равное 2. В обоих случаях рабочая нагрузка выполнения одинакова и обе архитектуры не конвейерные и не параллельные. Использование формулы ускорения дает

задержка S = L старый L новый = 3 CPI 2 CPI = 1,5. {\ displaystyle S _ {\ text {latency}} = {\ frac {L _ {\ text {old}}} {L _ {\ text {new}}}} = {\ frac {3 ~ {\ text {CPI}} } {2 ~ {\ text {CPI}}}} = 1.5.}S _ {\ text {latency}} = {\ frac {L _ {\ text {old}}} {L_ { \ text {new}}}} = {\ frac {3 ~ {\ text {CPI}}} {2 ~ {\ text {CPI}}}} = 1.5.

Мы также можем измерить ускорение в инструкциях за цикл (IPC ), что является пропускной способностью и обратной величиной CPI. Использование формулы ускорения дает

S пропускная способность = Q новый Q старый = 0,5 IPC 0,33 IPC = 1,5. {\ displaystyle S _ {\ text {throughput}} = {\ frac {Q _ {\ text {new}}} {Q _ {\ text {old}}}} = {\ frac {0.5 ~ {\ text {IPC}} } {0,33 ~ {\ text {IPC}}}} = 1,5.}S _ {\ text {throughput}} = {\ frac {Q _ {\ text {new}}} {Q _ {\ text {old}}}} = {\ frac {0.5 ~ {\ text {IPC}}} {0.33 ~ {\ text {IPC}}}} = 1.5.

Мы достигли такого же ускорения в 1,5 раза, хотя мы измерили разные величины.

Дополнительные сведения

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

Эффективность - это показатель использования ресурсов улучшенной системы, определяемый как

η = S s. {\ displaystyle \ eta = {\ frac {S} {s}}.}\ eta = {\ frac {S} {s}}.

Его значение обычно составляет от 0 до 1. Программы с линейным ускорением и программы, работающие на одном процессоре, имеют эффективность 1, в то время как многие сложные -to-распараллеливать программы имеют эффективность, такую ​​как 1 / ln (s), которая приближается к 0 по мере увеличения числа процессоров A = s.

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

  • вся область на графике полезна (тогда как в кривых ускорения тратится половина пространства);
  • легко увидеть, насколько хорошо работает улучшение системы;
  • нет необходимости строить кривую «идеального ускорения».

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

Суперлинейное ускорение

Иногда при параллельных вычислениях наблюдается ускорение более A при использовании процессоров A, что называется суперлинейным ускорением. Сверхлинейное ускорение случается редко и часто сбивает с толку новичков, которые считают, что теоретическое максимальное ускорение должно быть A при использовании процессоров A.

Одной из возможных причин сверхлинейного ускорения низкоуровневых вычислений является эффект кеширования, возникающий из-за различных иерархий памяти современного компьютера: при параллельных вычислениях, Меняется не только количество процессоров, но и размер накопленных кэшей от разных процессоров. При большем накопленном размере кэша большая часть или даже весь рабочий набор может поместиться в кеши, и время доступа к памяти резко сокращается, что приводит к дополнительному ускорению в дополнение к ускорению от фактических вычислений.

Аналогичная ситуация возникает при поиске в больших наборах данных, таких как геномные данные, поиск которых осуществляется реализациями BLAST. Там накопленная оперативная память от каждого из узлов в кластере позволяет переместить набор данных с диска в оперативную память, тем самым значительно сокращая время, необходимое, например, для mpiBLAST для его поиска.

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

Суперлинейное ускорение может также происходить в параллельных реализациях ветвления и границы для оптимизации: обработка одного узла одним процессором может повлиять на работу, которую другие процессоры должны выполнять для других узлов.

Ссылки

См. Также

Последняя правка сделана 2021-06-09 02:22:12
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте