Искать speedup в Викисловарь, бесплатный словарь. |
В компьютерной архитектуре, ускорение - это число, которое измеряет относительную производительность двух системы, обрабатывающие ту же проблему. С технической точки зрения, это повышение скорости выполнения задачи, выполняемой на двух аналогичных архитектурах с разными ресурсами. Понятие ускорения было установлено законом Амдала, в котором особое внимание уделялось параллельной обработке. Однако ускорение можно использовать в более общем плане, чтобы показать влияние на производительность после любого увеличения ресурсов.
Ускорение может быть определено для двух разных типов величин: задержка и пропускная способность.
Задержка архитектуры обратно пропорциональна скорости выполнения задачи:
где
Пропускная способность архитектуры - это скорость выполнения задачи:
где
Задержка часто измеряется в секундах на единицу рабочей нагрузки выполнения. Пропускная способность часто измеряется в единицах рабочей нагрузки выполнения в секунду. Другой единицей пропускной способности является инструкций на цикл (IPC), а обратная единица, циклов на инструкцию (CPI), является другой единицей задержки.
Ускорение безразмерно и определяется по-разному для каждого типа величины, поэтому это единообразный показатель.
Ускорение задержки определяется по следующей формуле:
где
Ускорение задержки можно предсказать по закону Амдала или закону Густафсона.
Ускорение пропускной способности определяется по следующей формуле:
где
Мы проверяем эффективность предсказателя ветвления при выполнении программа. Сначала мы выполняем программу со стандартным предсказателем ветвления на процессоре, что дает время выполнения 2,25 секунды. Затем мы выполняем программу с нашим модифицированным (и, надеюсь, улучшенным) предсказателем ветвления на том же процессоре, что дает время выполнения 1,50 секунды. В обоих случаях рабочая нагрузка на выполнение одинакова. Используя нашу формулу ускорения, мы знаем, что
Наш новый предсказатель ветвлений обеспечил ускорение в 1,5 раза по сравнению с исходным.
Мы также можем измерить ускорение в циклах на инструкцию (CPI), что является задержкой. Сначала мы выполняем программу со стандартным предсказателем ветвления, что дает CPI, равное 3. Затем мы выполняем программу с нашим модифицированным предсказателем ветвления, что дает CPI, равное 2. В обоих случаях рабочая нагрузка выполнения одинакова и обе архитектуры не конвейерные и не параллельные. Использование формулы ускорения дает
Мы также можем измерить ускорение в инструкциях за цикл (IPC ), что является пропускной способностью и обратной величиной CPI. Использование формулы ускорения дает
Мы достигли такого же ускорения в 1,5 раза, хотя мы измерили разные величины.
Пусть S - ускорение выполнения задачи, а s - ускорение выполнения той части задачи, которая выигрывает от улучшения ресурсов архитектуры. Линейное ускорение или идеальное ускорение достигается, когда S = s. При выполнении задачи с линейным ускорением удвоение локального ускорения удваивает общее ускорение. Поскольку это идеально, это считается очень хорошей масштабируемостью.
Эффективность - это показатель использования ресурсов улучшенной системы, определяемый как
Его значение обычно составляет от 0 до 1. Программы с линейным ускорением и программы, работающие на одном процессоре, имеют эффективность 1, в то время как многие сложные -to-распараллеливать программы имеют эффективность, такую как 1 / ln (s), которая приближается к 0 по мере увеличения числа процессоров A = s.
В инженерном контексте кривые эффективности чаще используются для графиков, чем кривые ускорения, так как
В контексте маркетинга кривые ускорения чаще встречаются используются, в основном потому, что они идут вверх и вправо и, таким образом, кажутся лучше менее информированным.
Иногда при параллельных вычислениях наблюдается ускорение более A при использовании процессоров A, что называется суперлинейным ускорением. Сверхлинейное ускорение случается редко и часто сбивает с толку новичков, которые считают, что теоретическое максимальное ускорение должно быть A при использовании процессоров A.
Одной из возможных причин сверхлинейного ускорения низкоуровневых вычислений является эффект кеширования, возникающий из-за различных иерархий памяти современного компьютера: при параллельных вычислениях, Меняется не только количество процессоров, но и размер накопленных кэшей от разных процессоров. При большем накопленном размере кэша большая часть или даже весь рабочий набор может поместиться в кеши, и время доступа к памяти резко сокращается, что приводит к дополнительному ускорению в дополнение к ускорению от фактических вычислений.
Аналогичная ситуация возникает при поиске в больших наборах данных, таких как геномные данные, поиск которых осуществляется реализациями BLAST. Там накопленная оперативная память от каждого из узлов в кластере позволяет переместить набор данных с диска в оперативную память, тем самым значительно сокращая время, необходимое, например, для mpiBLAST для его поиска.
Суперлинейное ускорение также может происходить при выполнении обратного отслеживания параллельно: исключение в одном потоке может привести к тому, что несколько других потоков откатятся раньше, чем они сами достигнут исключения.
Суперлинейное ускорение может также происходить в параллельных реализациях ветвления и границы для оптимизации: обработка одного узла одним процессором может повлиять на работу, которую другие процессоры должны выполнять для других узлов.