В компьютерной архитектуры , убыстрение это число , которое измеряет относительную производительность двух систем обработки с той же проблемой. С технической точки зрения, это повышение скорости выполнения задачи, выполняемой на двух аналогичных архитектурах с разными ресурсами. Понятие ускорения было установлено законом Амдала , в котором особое внимание уделялось параллельной обработке . Однако ускорение можно использовать в более общем плане, чтобы показать влияние на производительность после любого увеличения ресурсов.
Определения
Ускорение можно определить для двух разных типов величин: задержки и пропускной способности . [1]
Задержка архитектуры обратно пропорциональна скорости выполнения задачи:
где
- v - скорость выполнения задачи;
- T - время выполнения задачи;
- W - рабочая нагрузка выполнения задачи.
Пропускная способность архитектуры - это скорость выполнения задачи:
где
- ρ - плотность выполнения (например, количество этапов в конвейере команд для конвейерной архитектуры);
- A - производительность (например, количество процессоров для параллельной архитектуры).
Задержка часто измеряется в секундах на единицу рабочей нагрузки выполнения. Пропускная способность часто измеряется в единицах рабочей нагрузки выполнения в секунду. Другая единица пропускной способности - это количество инструкций за цикл (IPC), а обратная единица - количество циклов на инструкцию (CPI) - это еще одна единица задержки.
Ускорение безразмерно и определяется по-разному для каждого типа количества, поэтому это единообразный показатель.
Ускорение задержки
Ускорение задержки определяется по следующей формуле: [2]
где
- S latency - это ускорение задержки архитектуры 2 по сравнению с архитектурой 1;
- L 1 - задержка архитектуры 1;
- L 2 - это задержка архитектуры 2.
Ускорение задержки можно предсказать из закона Амдала или закона Густафсона .
Увеличение пропускной способности
Увеличение пропускной способности определяется следующей формулой: [3]
где
- S throughput - это увеличение пропускной способности архитектуры 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 , что называется суперлинейным ускорением . Сверхлинейное ускорение случается редко и часто сбивает с толку новичков, которые считают, что теоретическое максимальное ускорение должно быть A при использовании процессоров A.
Одной из возможных причин сверхлинейного ускорения низкоуровневых вычислений является эффект кеширования, возникающий из-за различных иерархий памяти современного компьютера: при параллельных вычислениях изменяется не только количество процессоров, но и размер накопленных кешей из разные процессоры. При большем накопленном размере кэша большая часть или даже весь рабочий набор может поместиться в кеши, а время доступа к памяти резко сокращается, что приводит к дополнительному ускорению в дополнение к фактическому вычислению. [4]
Аналогичная ситуация возникает при поиске в больших наборах данных, таких как геномные данные, поиск которых осуществляется реализациями BLAST . Там накопленная RAM от каждого из узлов в кластере позволяет набору данных перемещаться с диска в RAM, тем самым резко сокращая время, необходимое, например, 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: реализации и опыт крупномасштабных и грид-вычислений . Параллельная вычислительная гидродинамика. Springer. п. 95 . Проверено 21 марта 2013 .
- ^ http://people.cs.vt.edu/~feng/presentations/030903-ParCo.pdf
- ^ Спекенмейер, Эвальд (2005). «Суперлинейное ускорение для параллельного возврата». Конспект лекций по информатике . 297 : 985–993. DOI : 10.1007 / 3-540-18991-2_58 . ISBN 978-3-540-18991-6.
- ^ «Гуроби против тестов CPLEX» . cmu.edu . 29 января 2009 . Проверено 23 апреля 2018 года .
Смотрите также
- Закон Амдала
- Закон Густафсона
- Закон Брукса
- Метрика Карпа – Флатта
- Параллельное замедление
- Масштабируемость