Ускорение - Speedup
В компьютерная архитектура, ускорение - это число, которое измеряет относительную производительность двух систем, обрабатывающих одну и ту же проблему. С технической точки зрения, это повышение скорости выполнения задачи, выполняемой на двух похожих архитектурах с разными ресурсами. Понятие ускорения было установлено Закон Амдала, в котором особое внимание уделялось параллельная обработка. Однако ускорение можно использовать в более общем плане, чтобы показать влияние на производительность после любого увеличения ресурсов.
Определения
Ускорение можно определить для двух разных типов величин: задержка и пропускная способность.[1]
Задержка архитектуры - это величина, обратная скорости выполнения задачи:
куда
- v - скорость выполнения задачи;
- Т - время выполнения задачи;
- W рабочая нагрузка на выполнение задачи.
Пропускная способность архитектуры - это скорость выполнения задачи:
куда
- ρ - плотность выполнения (например, количество этапов в конвейер команд для конвейерный архитектура);
- А производительность (например, количество процессоры для параллельной архитектуры).
Задержка часто измеряется в секундах на единицу рабочей нагрузки выполнения. Пропускная способность часто измеряется в единицах рабочей нагрузки выполнения в секунду. Еще одна единица пропускной способности - инструкций за цикл (IPC) и его аналог, циклов на инструкцию (CPI) - еще одна единица задержки.
Ускорение безразмерно и определяется по-разному для каждого типа количества, поэтому это единообразный показатель.
Ускорение задержки
Ускорение в задержка определяется следующей формулой:[2]
куда
- Sзадержка - ускорение задержки архитектуры 2 по сравнению с архитектурой 1;
- L1 - задержка архитектуры 1;
- L2 это задержка архитектуры 2.
Ускорение задержки можно предсказать из Закон Амдала или же Закон Густафсона.
Увеличение пропускной способности
Ускорение в пропускная способность определяется следующей формулой:[3]
куда
- Sпропускная способность - увеличение пропускной способности архитектуры 2 по сравнению с архитектурой 1;
- Q1 - пропускная способность архитектуры 1;
- Q2 это пропускная способность архитектуры 2.
Примеры
Использование времени выполнения
Мы проверяем эффективность предсказателя переходов при выполнении программы. Сначала мы выполняем программу со стандартным предсказателем ветвления на процессоре, что дает время выполнения 2,25 секунды. Затем мы выполняем программу с нашим модифицированным (и, надеюсь, улучшенным) предсказателем ветвления на том же процессоре, что дает время выполнения 1,50 секунды. В обоих случаях рабочая нагрузка на выполнение одинакова. Используя нашу формулу ускорения, мы знаем
Наш новый предсказатель ветвлений обеспечил ускорение в 1,5 раза по сравнению с исходным.
Использование циклов на инструкцию и инструкций на цикл
Мы также можем измерить ускорение в циклах на инструкцию (CPI), что является задержкой. Сначала мы выполняем программу со стандартным предсказателем ветвления, который дает CPI, равный 3. Затем мы выполняем программу с нашим модифицированным предсказателем ветвления, который дает CPI, равный 2. В обоих случаях рабочая нагрузка выполнения одинакова и обе архитектуры не конвейерные и не параллельные. Использование формулы ускорения дает
Мы также можем измерить ускорение в инструкциях за цикл (МПК ), который является пропускной способностью и обратной величиной CPI. Использование формулы ускорения дает
Мы достигли такого же ускорения в 1,5 раза, хотя мы измерили разные величины.
Дополнительные детали
Позволять S быть ускорением выполнения задачи и s ускорение выполнения той части задачи, которая выигрывает от улучшения ресурсов архитектуры. Линейное ускорение или же идеальное ускорение получается, когда S = s. При выполнении задачи с линейным ускорением удвоение локального ускорения удваивает общее ускорение. Поскольку это идеальный вариант, он считается очень хорошим масштабируемость.
Эффективность - показатель использования ресурсов улучшенной системы, определяемый как
Его значение обычно составляет от 0 до 1. Программы с линейным ускорением и программы, работающие на одном процессоре, имеют эффективность 1, в то время как многие трудно распараллелить программы имеют эффективность, например 1 / ln (s)[нужна цитата ] что приближается к 0 как количество процессоров А = s увеличивается.
В инженерном контексте кривые эффективности чаще используются для графиков, чем кривые ускорения, поскольку
- вся область на графике полезна (тогда как в кривых ускорения тратится половина места);
- легко увидеть, насколько хорошо работает доработка системы;
- нет необходимости строить кривую «идеального ускорения».
В контексте маркетинга чаще используются кривые ускорения, в основном потому, что они идут вверх и вправо и, таким образом, кажутся лучше для менее информированных.
Суперлинейное ускорение
Иногда ускорение более чем А когда используешь А процессоров наблюдается в параллельные вычисления, который называется сверхлинейное ускорение. Сверхлинейное ускорение случается редко и часто сбивает с толку новичков, которые считают, что теоретическое максимальное ускорение должно быть А когда А используются процессоры.
Одной из возможных причин сверхлинейного ускорения низкоуровневых вычислений является эффект кеширования в результате различных иерархии памяти современного компьютера: при параллельных вычислениях изменяется не только количество процессоров, но и размер накопленных кэшей от разных процессоров. Чем больше размер накопленного кэша, тем больше или даже все рабочий набор может умещаться в кешах, и время доступа к памяти резко сокращается, что приводит к дополнительному ускорению в дополнение к тому, что происходит при фактических вычислениях.[4]
Аналогичная ситуация возникает при поиске больших наборов данных, таких как геномные данные, которые ищет ВЗРЫВ реализации. Там накопленная 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). «Параллельное трехмерное прямое моделирование методом Монте-Карло для моделирования микропотоков». Parallel Computational Fluid Dynamics 2007: реализации и опыт крупномасштабных и грид-вычислений. Параллельная вычислительная гидродинамика. Springer. п. 95. Получено 2013-03-21.
- ^ http://people.cs.vt.edu/~feng/presentations/030903-ParCo.pdf
- ^ Спекенмейер, Эвальд (2005). «Суперлинейное ускорение для параллельного возврата». Конспект лекций по информатике. 297: 985–993. Дои:10.1007/3-540-18991-2_58. ISBN 978-3-540-18991-6.
- ^ «Гуроби против тестов CPLEX». cmu.edu. 29 января 2009 г.. Получено 23 апреля 2018.