Ускорение - Speedup
В компьютерной архитектуры , убыстрение это число , которое измеряет относительную производительность двух систем обработки с той же проблемой. С технической точки зрения, это повышение скорости выполнения задачи, выполняемой на двух одинаковых архитектурах с разными ресурсами. Понятие ускорения было установлено законом Амдала , в котором особое внимание уделялось параллельной обработке . Однако ускорение можно использовать в более общем плане, чтобы показать влияние на производительность после любого увеличения ресурсов.
Определения
Ускорение можно определить для двух разных типов величин: задержки и пропускной способности .
Задержка архитектуры обратно пропорциональна скорости выполнения задачи:
где
- v - скорость выполнения задачи;
- T - время выполнения задачи;
- W - рабочая нагрузка выполнения задачи.
Пропускная способность архитектуры - это скорость выполнения задачи:
где
- ρ - плотность выполнения (например, количество этапов в конвейере команд для конвейерной архитектуры);
- A - производительность (например, количество процессоров для параллельной архитектуры).
Задержка часто измеряется в секундах на единицу рабочей нагрузки выполнения. Пропускная способность часто измеряется в единицах рабочей нагрузки выполнения в секунду. Еще одна единица пропускной способности - это количество инструкций за цикл (IPC), а обратная единица - количество циклов на инструкцию (CPI) - еще одна единица задержки.
Ускорение безразмерно и определяется по-разному для каждого типа количества, поэтому это единообразный показатель.
Ускорение задержки
Ускорение задержки определяется по следующей формуле:
где
- S latency - это ускорение задержки архитектуры 2 по сравнению с архитектурой 1;
- L 1 - задержка архитектуры 1;
- L 2 - это задержка архитектуры 2.
Ускорение задержки можно предсказать из закона Амдала или закона Густафсона .
Увеличение пропускной способности
Увеличение пропускной способности определяется следующей формулой:
где
- 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.
Одной из возможных причин сверхлинейного ускорения низкоуровневых вычислений является эффект кеширования, возникающий из-за различных иерархий памяти современного компьютера: при параллельных вычислениях изменяется не только количество процессоров, но и размер накопленных кешей из разные процессоры. При большем накопленном размере кэша большая часть или даже весь рабочий набор может поместиться в кеши, а время доступа к памяти резко сокращается, что приводит к дополнительному ускорению в дополнение к фактическому вычислению.
Аналогичная ситуация возникает при поиске больших наборов данных, таких как геномные данные, поиск которых осуществляется реализациями BLAST . Накопленная RAM от каждого из узлов в кластере позволяет набору данных перемещаться с диска в RAM, тем самым резко сокращая время, необходимое, например, mpiBLAST для его поиска.
Сверхлинейное ускорение также может происходить при параллельном выполнении обратного отслеживания : исключение в одном потоке может привести к тому, что несколько других потоков откатятся раньше, чем они сами достигнут исключения.
Сверхлинейное ускорение также может происходить в параллельных реализациях ветвей и границ для оптимизации: обработка одного узла одним процессором может влиять на работу, которую другие процессоры должны выполнять для других узлов.