Ускорение
В компьютерной архитектуре ускорение — это число, которое измеряет относительную производительность двух систем, решающих одну и ту же задачу. Говоря технически, это улучшение скорости выполнения задачи, выполняемой на двух одинаковых архитектурах с разными ресурсами. Понятие ускорения было установлено законом Амдала , который был особенно ориентирован на параллельную обработку . Однако ускорение можно использовать в более широком смысле, чтобы показать влияние на производительность после любого улучшения ресурсов.
Определения
[ редактировать ]Ускорение можно определить для двух разных типов величин: задержки и пропускной способности . [ 1 ]
Задержка архитектуры обратна скорости выполнения задачи:
где
- v – скорость выполнения задачи;
- Т – время выполнения задачи;
- W — рабочая нагрузка выполнения задачи.
Пропускная способность архитектуры — это скорость выполнения задачи:
где
- ρ — плотность выполнения (например, количество стадий в конвейере команд для конвейерной архитектуры);
- A — производительность выполнения (например, количество процессоров для параллельной архитектуры).
Задержка часто измеряется в секундах на единицу рабочей нагрузки выполнения. Пропускная способность часто измеряется в единицах рабочей нагрузки выполнения в секунду. Другая единица пропускной способности — количество инструкций на цикл (IPC), а обратная ей единица — число циклов на инструкцию (CPI) — еще одна единица задержки.
Ускорение является безразмерным и определяется по-разному для каждого типа величины, поэтому оно является согласованным показателем.
Ускорение задержки
[ редактировать ]Ускорение задержки определяется по следующей формуле: [ 2 ]
где
- S Задержка — это увеличение задержки архитектуры 2 по сравнению с архитектурой 1;
- L 1 — задержка архитектуры 1;
- L 2 — задержка архитектуры 2.
Увеличение задержки можно предсказать на основе закона Амдала или закона Густавсона .
Ускорение пропускной способности
[ редактировать ]Ускорение производительности определяется по формуле: [ 3 ]
где
- S Пропускная способность — это ускорение пропускной способности архитектуры 2 по сравнению с архитектурой 1;
- Q 1 — пропускная способность архитектуры 1;
- Q 2 — пропускная способность архитектуры 2.
Примеры
[ редактировать ]Использование времени выполнения
[ редактировать ]Мы тестируем эффективность предсказателя ветвей при выполнении программы. Сначала мы выполняем программу со стандартным предсказателем ветвления на процессоре, что дает время выполнения 2,25 секунды. Затем мы выполняем программу с помощью нашего модифицированного (и, надеюсь, улучшенного) предсказателя ветвей на том же процессоре, что обеспечивает время выполнения 1,50 секунды. В обоих случаях рабочая нагрузка на выполнение одинакова. Используя нашу формулу ускорения, мы знаем
Наш новый предсказатель ветвей обеспечил ускорение в 1,5 раза по сравнению с оригиналом.
Использование циклов на инструкцию и инструкций на цикл
[ редактировать ]Мы также можем измерить ускорение в циклах на инструкцию (CPI), что представляет собой задержку. Сначала мы выполняем программу со стандартным предиктором ветвления, который дает CPI, равный 3. Затем мы выполняем программу с нашим модифицированным предиктором ветвления, который дает CPI, равный 2. В обоих случаях рабочая нагрузка при выполнении одинакова, и обе архитектуры не являются конвейерными и параллельными. Использование формулы ускорения дает
Мы также можем измерить ускорение в количестве инструкций за цикл ( IPC ), что является пропускной способностью и обратной величиной CPI. Использование формулы ускорения дает
Мы добились того же ускорения в 1,5 раза, хотя измеряли разные величины.
Дополнительная информация
[ редактировать ]Пусть S — ускорение выполнения задачи, а s — ускорение выполнения той части задачи, которая выигрывает от улучшения ресурсов архитектуры. Линейное ускорение или идеальное ускорение получается, когда S = s . При выполнении задачи с линейным ускорением удвоение локального ускорения удваивает общее ускорение. Поскольку это идеальный вариант, это считается очень хорошей масштабируемостью .
Эффективность — это показатель использования ресурсов улучшенной системы, определяемый как
Его значение обычно находится в диапазоне от 0 до 1. Программы с линейным ускорением и программы, работающие на одном процессоре, имеют эффективность, равную 1, в то время как многие программы, которые сложно распараллелить, имеют эффективность, например, 1/ln( s ). [ нужна ссылка ] который приближается к 0 по мере увеличения числа процессоров A = s .
В инженерном контексте для графиков чаще используются кривые эффективности, чем кривые ускорения, поскольку
- вся площадь графика полезна (тогда как в кривых ускорения половина пространства тратится впустую);
- легко увидеть, насколько хорошо работает улучшение системы;
- нет необходимости строить кривую «идеального ускорения».
В маркетинговом контексте чаще используются кривые ускорения, главным образом потому, что они идут вверх и вправо и, таким образом, кажутся менее информированным лучше.
Суперлинейное ускорение
[ редактировать ]ускорение более чем на А при использовании процессоров А наблюдается Иногда при параллельных вычислениях , которое называется суперлинейным ускорением . Суперлинейное ускорение случается редко и часто сбивает с толку новичков, которые считают, что теоретическое максимальное ускорение должно быть равно A при A. использовании процессоров
Одной из возможных причин сверхлинейного ускорения низкоуровневых вычислений является эффект кэширования , возникающий из-за различной иерархии памяти современного компьютера: при параллельных вычислениях меняется не только количество процессоров, но и размер накопленных кэшей. разные процессоры. Благодаря большему размеру накопленного кэша в кэши может поместиться больше или даже весь рабочий набор , и время доступа к памяти резко сокращается, что приводит к дополнительному ускорению в дополнение к фактическому ускорению вычислений. [ 4 ]
Аналогичная ситуация возникает при поиске больших наборов данных, таких как геномные данные, поиск которых осуществляется реализациями BLAST . Там накопленная ОЗУ каждого из узлов кластера позволяет набору данных перемещаться с диска в ОЗУ, тем самым значительно сокращая время, необходимое, например, mpiBLAST для его поиска. [ 5 ]
Суперлинейное ускорение также может происходить при параллельном выполнении обратного отслеживания : исключение в одном потоке может привести к тому, что несколько других потоков начнут выполнять возврат раньше, прежде чем они сами достигнут исключения. [ 6 ]
Суперлинейное ускорение также может происходить в параллельных реализациях метода ветвей и границ для оптимизации: [ 7 ] обработка одного узла одним процессором может повлиять на работу, которую другие процессоры должны выполнять для других узлов.
См. также
[ редактировать ]- Закон Амдала
- Закон Густавсона
- Закон Брукса
- Метрика Карпа – Флатта
- Параллельное замедление
- Масштабируемость
Ссылки
[ редактировать ]- ^ Мартин, Майло. «Производительность и сравнительный анализ» (PDF) . Проверено 5 июня 2014 г.
- ^ Хеннесси, Джон Л.; Дэвид А., Паттерсон (2012). Компьютерная архитектура: количественный подход . Уолтем, Массачусетс: Морган Кауфманн . стр. 46–47 . ISBN 978-0-12-383872-8 .
- ^ Баер, Жан-Лу (2010). Микропроцессорная архитектура: от простых конвейеров к микропроцессорам . Нью-Йорк: Издательство Кембриджского университета . стр. 10 . ISBN 978-0-521-76992-1 .
- ^ Бензи, Джон; Дамодаран, М. (2007). «Параллельное трехмерное прямое моделирование Монте-Карло для моделирования микропотоков» . Параллельная вычислительная гидродинамика 2007: Реализации и опыт крупномасштабных и грид-вычислений . Параллельная вычислительная гидродинамика. Спрингер. п. 95 . Проверено 21 марта 2013 г.
- ^ http://people.cs.vt.edu/~feng/presentations/030903-ParCo.pdf [ только URL-адрес PDF ]
- ^ Шпекенмейер, Эвальд (1988). «Сверхлинейное ускорение для параллельного возврата». Суперкомпьютеры . Конспекты лекций по информатике. Том. 297. стр. 985–993. дои : 10.1007/3-540-18991-2_58 . ISBN 978-3-540-18991-6 .
- ^ «Гуроби по сравнению с эталонами CPLEX» . cmu.edu . 29 января 2009 года . Проверено 23 апреля 2018 г.