Анализ параллельных алгоритмов - Analysis of parallel algorithms
В этой статье обсуждается анализ из параллельные алгоритмы. Как и при анализе «обычных», последовательных алгоритмов, обычно интересуют асимптотический ограничивает потребление ресурсов (в основном время, затрачиваемое на вычисления), но анализ выполняется в присутствии нескольких процессоров, которые взаимодействуют для выполнения вычислений. Таким образом, можно определить не только, сколько «шагов» занимает вычисление, но и насколько быстрее оно становится по мере увеличения числа процессоров. Подход к анализу работает, сначала подавляя (или абстрагируясь) количество процессоров. В следующем абзаце поясняется, как впервые возникла абстракция числа процессоров.
Фреймворк так называемого рабочего времени (WT) (иногда называемого глубиной работы или продолжительностью работы) был первоначально представлен Шилоахом и Вишкиным. [1]для концептуализации и описания параллельных алгоритмов. В рамках WT параллельный алгоритм сначала описывается в терминах параллельных раундов. Для каждого раунда описываются операции, которые необходимо выполнить, но некоторые проблемы могут быть устранены. Например, количество операций в каждом цикле не обязательно должно быть ясным, процессоры не должны упоминаться, и любая информация, которая может помочь с назначением процессоров для заданий, не должна учитываться. Во-вторых, предоставляется скрытая информация. Включение подавленной информации фактически руководствуется доказательством теоремы о расписании, полученной Брентом,[2] что будет объяснено далее в этой статье. Структура WT полезна, поскольку, хотя она может значительно упростить начальное описание параллельного алгоритма, вставка деталей, подавленных этим начальным описанием, часто не очень сложно. Например, структура WT была принята в качестве базовой структуры представления в книгах по параллельным алгоритмам (для Параллельная машина с произвольным доступом Модель PRAM) [3]и ,[4] а также в классных заметках.[5] В приведенном ниже обзоре объясняется, как можно использовать структуру WT для анализа более общих параллельных алгоритмов, даже если их описание недоступно в рамках структуры WT.
Обзор
Предположим, что вычисления выполняются на машине, имеющей п процессоры. Позволять Тп обозначают время, которое истекает между началом вычисления и его концом. Анализ вычислений Продолжительность акцентирует внимание на следующих понятиях:
- В работай вычисления, выполненного п процессоры - это общее количество примитивных операций, выполняемых процессорами.[6] Игнорируя накладные расходы связи от синхронизации процессоров, это равно времени, используемому для выполнения вычислений на одном процессоре, обозначенном Т1.
- В глубина или же охватывать - длина самой длинной серии операций, которые должны выполняться последовательно из-за зависимости данных (в критический путь). Глубину также можно назвать длина критического пути вычисления.[7] Минимизация глубины / диапазона важна при разработке параллельных алгоритмов, поскольку глубина / диапазон определяет минимально возможное время выполнения.[8] В качестве альтернативы интервал можно определить как время Т∞ проводил вычисления, используя идеализированную машину с бесконечным числом процессоров.[9]
- В Стоимость вычисления - это величина pTп. Это выражает общее время, затраченное всеми процессорами как на вычисления, так и на ожидание.[6]
Из определений работы, продолжительности и стоимости следует несколько полезных результатов:
- Закон о труде. Стоимость всегда минимум работы: pTп ≥ Т1. Это следует из того, что п процессоры могут выполнять не более п операции параллельно.[6][9]
- Закон диапазона. Конечное число п процессоров не могут превзойти бесконечное число процессоров, так что Тп ≥ Т∞.[9]
Используя эти определения и законы, можно дать следующие показатели эффективности:
- Ускорение - это выигрыш в скорости за счет параллельного выполнения по сравнению с последовательным выполнением: Sп = Т1 ∕ Тп. Когда ускорение Ω (п) для размера ввода п (с помощью нотация большой O ) ускорение является линейным, что оптимально для простых моделей вычислений, поскольку из закона работы следует, что Т1 ∕ Тп ≤ п (сверхлинейное ускорение может возникнуть на практике из-за иерархия памяти последствия). Ситуация Т1 ∕ Тп = п называется идеальным линейным ускорением.[9] Алгоритм, демонстрирующий линейное ускорение, называется масштабируемый.[6]
- Эффективность это ускорение на процессор, Sп ∕ п.[6]
- Параллелизм это соотношение Т1 ∕ Т∞. Он представляет собой максимально возможное ускорение на любом количестве процессоров. По закону диапазона параллелизм ограничивает ускорение: если п > Т1 ∕ Т∞, тогда:
.[9]
- В расслабленность является Т1 ∕ (pT∞). Слабость меньше единицы означает (по закону диапазона), что идеальное линейное ускорение невозможно на п процессоры.[9]
Выполнение на ограниченном количестве процессоров
Анализ параллельных алгоритмов обычно проводится в предположении наличия неограниченного числа процессоров. Это нереально, но не проблема, поскольку любые вычисления, которые могут выполняться параллельно на N процессоры могут выполняться на п < N процессоров, позволяя каждому процессору выполнять несколько единиц работы. Результат называется Закон Брента заявляет, что можно выполнить такое «моделирование» во времени Тп, ограниченный[10]
или, менее точно,[6]
Альтернативное изложение закона границ Тп сверху и снизу
- .
показывая, что пролет (глубина) Т∞ и работа Т1 вместе обеспечивают разумные границы времени вычислений.[2]
Рекомендации
- ^ Шилоах, Йосси; Вишкин, Узи (1982). "An О(п2 бревноп) параллельный алгоритм максимального потока ». Журнал алгоритмов. 3 (2): 128–146. Дои:10.1016 / 0196-6774 (82) 90013-X.
- ^ а б Брент, Ричард П. (1974-04-01). «Параллельное вычисление общих арифметических выражений». Журнал ACM. 21 (2): 201–206. CiteSeerX 10.1.1.100.9361. Дои:10.1145/321812.321815. ISSN 0004-5411. S2CID 16416106.
- ^ JaJa, Джозеф (1992). Введение в параллельные алгоритмы. Эддисон-Уэсли. ISBN 978-0-201-54856-3.
- ^ Келлер, Йорг; Кесслер, Кристоф В .; Трафф, Джеспер Л. (2001). Практическое программирование PRAM. Wiley-Interscience. ISBN 978-0-471-35351-5.
- ^ Вишкин, Узи (2009). Параллельное мышление: некоторые основные алгоритмы и методы работы с параллельными данными, 104 страницы (PDF). Классные заметки по курсам по параллельным алгоритмам, которые преподаются с 1992 года в Мэрилендском университете, Колледж-Парке, Тель-Авивском университете и Технионе.
- ^ а б c d е ж Казанова, Анри; Легран, Арно; Роберт, Ив (2008). Параллельные алгоритмы. CRC Press. п. 10. CiteSeerX 10.1.1.466.8142.
- ^ Блеллох, Гай (1996). «Программирование параллельных алгоритмов» (PDF). Коммуникации ACM. 39 (3): 85–97. CiteSeerX 10.1.1.141.5884. Дои:10.1145/227234.227246. S2CID 12118850.
- ^ Майкл МакКул; Джеймс Рейндерс; Арка Робисон (2013). Структурированное параллельное программирование: шаблоны для эффективных вычислений. Эльзевир. С. 4–5.
- ^ а б c d е ж Кормен, Томас Х.; Лейзерсон, Чарльз Э.; Ривест, Рональд Л.; Штейн, Клиффорд (2009) [1990]. Введение в алгоритмы (3-е изд.). MIT Press и McGraw-Hill. С. 779–784. ISBN 0-262-03384-4.
- ^ Густафсон, Джон Л. (2011). «Теорема Брента». Энциклопедия параллельных вычислений. С. 182–185. Дои:10.1007/978-0-387-09766-4_80. ISBN 978-0-387-09765-7.