Jump to content

Коллективная операция

Коллективные операции являются строительными блоками шаблонов взаимодействия, которые часто используются в алгоритмах SPMD в контексте параллельного программирования . Следовательно, существует заинтересованность в эффективной реализации этих операций.

Реализация коллективных операций обеспечивается интерфейсом передачи сообщений. [1] (МПИ).

Определения

[ редактировать ]

Во всех асимптотических функциях времени выполнения мы обозначаем задержку (или время запуска каждого сообщения, независимо от размера сообщения), стоимость связи за слово , количество процессоров и размер ввода на узел . В тех случаях, когда у нас есть начальные сообщения на более чем одном узле, мы предполагаем, что все локальные сообщения имеют одинаковый размер. Для обращения к отдельным процессорам мы используем .

Если у нас нет равного распределения, т.е. узла имеет сообщение размера , мы получаем верхнюю границу времени выполнения, установив .

модель распределенной памяти Предполагается . Концепции аналогичны модели общей памяти . Однако системы с общей памятью могут обеспечивать аппаратную поддержку некоторых операций, таких как, широковещательная рассылка ( § Broadcast ), что обеспечивает удобное одновременное чтение. например, [2] Таким образом, могут стать доступны новые алгоритмические возможности.

Транслировать

[ редактировать ]
Есть три квадрата, выровненных вертикально слева, и три квадрата, выровненных вертикально справа. Пунктирная линия соединяет верхний левый и верхний правый квадрат. Две сплошные линии соединяют верхний левый квадрат, средний и нижний правый квадрат. Буква а написана в верхнем левом квадрате и во всех правых квадратах.
Информационный поток операции Broadcast выполняется на трех узлах.

Схема трансляции [3] используется для распределения данных от одного процессора ко всем процессорам, что часто необходимо в параллельных программах SPMD для распределения входных или глобальных значений. Трансляцию можно интерпретировать как обратную версию шаблона сокращения ( § Сокращение ). Изначально только root с сохраняет сообщение . Во время трансляции отправляется на остальные процессоры, так что в конечном итоге доступен для всех процессоров.

Поскольку реализация посредством последовательного цикла for с итерации становятся узким местом, подход «разделяй и властвуй» широко распространен . Одна из возможностей — использовать биномиальную древовидную структуру с требованием, чтобы должна быть степенью двойки. Когда блок обработки отвечает за отправку в обрабатывающие подразделения , он отправляет в блок обработки и делегирует ответственность за блоки обработки перед ним, в то время как его собственная ответственность сводится к .

Биномиальные деревья имеют проблемы с длинными сообщениями. . Приемный блок может распространять сообщение другим устройствам только после получения всего сообщения. При этом сеть связи не используется. конвейерная обработка бинарных деревьев , где Поэтому используется разбивается на массив пакеты размером . Затем пакеты передаются один за другим, что обеспечивает быстрое распространение данных в сети связи.

Конвейерная трансляция по сбалансированному двоичному дереву возможна в , тогда как для неконвейерного случая требуется расходы.

Уменьшать

[ редактировать ]
Есть три квадрата, выровненных вертикально слева, и три квадрата, выровненных вертикально справа. Между двумя столбцами помещается круг с буквой f внутри. Три сплошные линии соединяют круг с тремя левыми квадратами. Одна сплошная линия соединяет круг и верхний правый квадрат. Буквы а, б и в написаны в левых квадратах от большей к младшей. Буква альфа написана в правом верхнем квадрате.
Информационный поток операции сокращения выполняется на трех узлах. f — ассоциативный оператор, а α — результат приведения.

Шаблон сокращения [4] используется для сбора данных или частичных результатов от разных блоков обработки и объединения их в глобальный результат выбранным оператором. Данный процессоры, сообщения находится на процессоре изначально. Все агрегируются по и результат в конечном итоге сохраняется на . Оператор сокращения должен быть как минимум ассоциативным. Некоторые алгоритмы требуют коммутативного оператора с нейтральным элементом. Операторы любят , , являются общими.

Соображения по реализации аналогичны широковещанию ( § Broadcast ). Для конвейерной обработки двоичных деревьев сообщение должно быть представлено как вектор меньшего объекта для покомпонентного сокращения.

Конвейерное сокращение сбалансированного двоичного дерева возможно в .

Все-Уменьшить

[ редактировать ]
Есть три квадрата, выровненных вертикально слева, и три квадрата, выровненных вертикально справа. Между двумя столбцами помещается круг с буквой f внутри. Три сплошные линии соединяют круг с тремя левыми квадратами. Одна сплошная линия соединяет круг и верхний правый квадрат. Буквы а, б и в написаны в левых квадратах от большей к младшей. Буква альфа написана в правом верхнем квадрате.
Информационный поток операции All-Reduce выполняется на трех узлах. f — ассоциативный оператор, а α — результат приведения.

Шаблон полного сокращения [5] (также называемый allreduce) используется, если результат операции сокращения ( § Сокращение ) должен быть распространен на все процессоры. Данный процессоры, сообщения находится на процессоре изначально. Все агрегируются оператором и результат в конечном итоге сохраняется на всех . Аналог операции сокращения, оператор должно быть как минимум ассоциативным.

All-reduce можно интерпретировать как операцию сокращения с последующей трансляцией ( § Broadcast ). Для длинных сообщений подойдет соответствующая реализация, тогда как для коротких сообщений задержку можно уменьшить, используя топологию гиперкуба ( Hypercube (pattern communication) § All-Gather/All-Reduce ), если это степень двойки. All-reduce также можно реализовать с помощью алгоритма «бабочка» и добиться оптимальной задержки и пропускной способности. [6]

Полное сокращение возможно в , поскольку сокращение и трансляция возможны в с конвейеризацией на сбалансированных двоичных деревьях . All-reduce, реализованный с помощью алгоритма-бабочки, обеспечивает такое же асимптотическое время выполнения.

Префикс-Сумма/Сканирование

[ редактировать ]
Есть три квадрата, выровненных по вертикали слева, и три прямоугольника, выровненных по вертикали справа. Между двумя столбцами помещается кружок со словом «скан» внутри. Три сплошные линии соединяют круг с тремя левыми квадратами. Три сплошные линии соединяют круг с тремя правыми квадратами. Буквы а, б и в написаны в левых квадратах от большей к младшей. В правом верхнем квадрате написана буква а. В середине правого квадрата написано слагаемое a плюс b. В правом нижнем квадрате написано слагаемое a плюс b плюс c.
Информационный поток операции Prefix-Sum/Scan выполняется на трех узлах. Оператор + может быть любым ассоциативным оператором.

Префикс-сумма или операция сканирования [7] используется для сбора данных или частичных результатов из различных блоков обработки и для вычисления оператором промежуточных результатов, которые сохраняются в этих блоках обработки. Ее можно рассматривать как обобщение операции сокращения ( § Редукция ). Данный процессоры, сообщения находится на процессоре . Оператор должен быть как минимум ассоциативным, тогда как некоторые алгоритмы требуют также коммутативного оператора и нейтрального элемента. Общие операторы: , и . В конечном итоге блок обработки сохраняет сумму префикса . В случае так называемой суммы эксклюзивного префикса блок обработки сохраняет сумму префикса . Некоторые алгоритмы требуют хранения общей суммы в каждом процессоре в дополнение к суммам префиксов.

Для коротких сообщений этого можно достичь с помощью топологии гиперкуба, если это степень двойки. Для длинных сообщений топология гиперкуба ( Гиперкуб (шаблон связи) § Сумма префиксов , Сумма префиксов § Распределенная память: алгоритм гиперкуба ) не подходит, поскольку все процессоры активны на каждом этапе и поэтому конвейерную обработку использовать нельзя. Топология двоичного дерева лучше подходит для произвольных и длинные сообщения ( сумма префиксов § Большие размеры сообщений: конвейерное двоичное дерево ).

Префикс-сумма в бинарном дереве может быть реализована с восходящей и нисходящей фазой. В восходящей фазе выполняется сокращение, а нисходящая фаза аналогична широковещательной передаче, где суммы префиксов вычисляются путем отправки разных данных левому и правому дочернему элементу. При таком подходе возможна конвейерная обработка, поскольку операции равны сокращению ( § Сокращение ) и широковещанию ( § Широковещательная рассылка ).

Конвейерная сумма префиксов в двоичном дереве возможна в .

Барьер [8] как коллективная операция является обобщением концепции барьера , которую можно использовать в распределенных вычислениях. Когда процессор вызывает барьер, он ждет, пока все остальные процессоры также не вызовут барьер. Таким образом, барьер используется для достижения глобальной синхронизации в распределенных вычислениях.

Один из способов реализации барьера — вызвать all-reduce ( § All-Reduce ) с пустым/фиктивным операндом. Мы знаем, что время выполнения All-reduce . Использование фиктивного операнда уменьшает размер. к постоянному коэффициенту и приводит к времени выполнения .

Собирать

[ редактировать ]
Есть три квадрата, выровненных по вертикали слева, и три прямоугольника, выровненных по вертикали справа. Пунктирная линия соединяет верхний левый квадрат с верхним правым прямоугольником. Две сплошные линии соединяют средний и нижний левый квадраты с верхним правым прямоугольником. Буквы а, б и в написаны в левых квадратах от большей к младшей. Буквы а, б и в написаны в верхнем правом прямоугольнике подряд.
Информационный поток операции Gather выполняется на трех узлах.

Схема сбора информации [9] используется для хранения данных всех процессоров в одном процессоре. Данный процессоры, сообщения на процессорном блоке . Для фиксированного процессора , мы хотим сохранить сообщение на . Сбор можно рассматривать как операцию сокращения ( § Редукция ), в которой используется оператор конкатенации. Это работает благодаря тому, что конкатенация ассоциативна. Используя тот же алгоритм сокращения биномиального дерева, мы получаем время выполнения . Мы видим, что асимптотическое время выполнения аналогично асимптотическому времени выполнения сокращения , но с добавлением к слагаемому множителя p . Этот дополнительный фактор обусловлен тем, что размер сообщения увеличивается на каждом этапе по мере объединения сообщений. Сравните это, чтобы уменьшить размер сообщения, который является константой для таких операторов, как .

Всесобрать

[ редактировать ]
Есть три квадрата, выровненных по вертикали слева, и три прямоугольника, выровненных по вертикали справа. Три пунктирные линии соединяют верхний левый квадрат с верхним правым прямоугольником, средний левый квадрат со средним правым прямоугольником и нижний левый квадрат с нижним правым прямоугольником. Две сплошные линии соединяют средний и нижний левый квадраты с верхним правым прямоугольником. Две сплошные линии соединяют верхний и нижний левый квадрат со средним правым прямоугольником. Две сплошные линии соединяют верхний и средний левый квадраты с нижним правым прямоугольником. Буквы а, б и в написаны в левых квадратах от большей к младшей. Буквы а, б и в написаны во всех правых прямоугольниках подряд.
Информационный поток операции All-Gather выполняется на трёх узлах.

Схема всеобщего общения [9] используется для сбора данных со всех блоков обработки и хранения собранных данных на всех блоках обработки. Данный блоки обработки , сообщение изначально хранится на , мы хотим сохранить сообщение на каждом .

Это можно рассматривать по-разному. Первый представляет собой операцию полного сокращения ( § All-Reduce ) с конкатенацией в качестве оператора, точно так же, как сбор может быть представлен с помощью сокращения. Второй представляет собой операцию сбора, за которой следует широковещательная рассылка нового сообщения размером . При этом мы видим, что все собирается возможно.

Есть три прямоугольника, выровненных по вертикали слева, и три квадрата, выровненных по вертикали справа. Пунктирная линия соединяет верхний левый прямоугольник с верхним правым квадратом. Две сплошные линии соединяют верхний левый прямоугольник со средним и нижним правым квадратами. Буквы c, b и a написаны в верхнем левом прямоугольнике подряд. Буквы а, б и в написаны в правых квадратах от большей к младшей.
Информационный поток операции Scatter выполняется на трёх узлах.

Схема разброса сообщений [10] используется для распределения данных от одного процессора ко всем процессорам. Он отличается от широковещательной передачи тем, что не отправляет одно и то же сообщение всем процессорам. Вместо этого он разделяет сообщение и доставляет одну его часть каждому процессору.

Данный блоки обработки , фиксированный процессор который содержит сообщение . Мы хотим передать сообщение на . Применяются те же проблемы реализации, что и для сбора ( § Gather ). Это приводит к оптимальному времени работы в .

Все на все

[ редактировать ]

Все на все [11] является наиболее общей моделью общения. Для , сообщение это сообщение, которое изначально хранится на узле и должен быть доставлен на узел . Мы можем выражать все примитивы связи, не использующие операторы, через все-всем. Например, трансляция сообщения из узла эмулируется установкой для и настройка пусто для .

Предполагая, что у нас есть полностью подключенная сеть, наилучшее время работы для всех-всех находится в . Это достигается за счет раунды прямого обмена сообщениями. Для степень 2, в раунде связи , узел обменивается сообщениями с узлом .

Если размер сообщения невелик и при передаче данных преобладает задержка, для распределения сообщений во времени можно использовать алгоритм гиперкуба. .

Есть три прямоугольника, выровненных по вертикали слева, и три прямоугольника, выровненных по вертикали справа. Прямоугольники в три раза выше ширины. Члены a1, a2 и a3 написаны в верхнем левом прямоугольнике один под другим. Термины b1, b2 и b3 написаны в левом среднем прямоугольнике один под другим. Термины c1, c2 и c3 написаны в нижнем левом прямоугольнике один под другим. Члены a1, b1 и c1 написаны в правом верхнем прямоугольнике друг под другом. Члены a2, b2 и c2 написаны в среднем правом прямоугольнике один под другим. Члены a3, b3 и c3 написаны в правом нижнем прямоугольнике друг под другом. Пунктирная линия соединяет a1 из верхнего левого прямоугольника и a1 из верхнего правого прямоугольника. Пунктирная линия соединяет b2 из среднего левого прямоугольника и b2 из среднего правого прямоугольника. Пунктирная линия соединяет c3 из нижнего левого прямоугольника и c3 из нижнего правого прямоугольника. Сплошные линии соединяют другие соответствующие члены между левым и правым прямоугольниками.
Информационный поток операции «Все-всем» выполняется на трех узлах. Буквы обозначают узлы, а цифры обозначают элементы информации.

Обзор среды выполнения

[ редактировать ]

Эта таблица [12] дает обзор наиболее известных асимптотических сред выполнения, предполагая, что у нас есть свободный выбор топологии сети.

Примерами топологий, которые нам нужны для оптимального времени выполнения, являются бинарное дерево , биномиальное дерево, гиперкуб .

На практике нам приходится приспосабливаться к доступным физическим топологиям, например, «стрекоза», «толстое дерево» , грид-сеть (ссылается и на другие топологии).

Дополнительная информация в разделе Топология сети .

Для каждой операции оптимальный алгоритм может зависеть от входных размеров. . Например, широковещательную рассылку коротких сообщений лучше всего реализовать с использованием биномиального дерева, тогда как для длинных сообщений оптимальной является конвейерная связь на сбалансированном двоичном дереве.

Сложности, указанные в таблице, зависят от задержки и стоимость связи за слово помимо количества процессоров и размер входного сообщения на узел . Столбцы # отправителей и # получателей представляют количество отправителей и получателей, участвующих в операции соответственно. В столбце # сообщений указано количество входных сообщений и поле «Вычисления?». Столбец указывает, выполняются ли какие-либо вычисления над сообщениями или сообщения просто доставляются без обработки. Сложность дает асимптотическую сложность оптимальной реализации во время выполнения при свободном выборе топологии.

Имя # отправителей # получателей # сообщения Расчеты? Сложность
Транслировать нет
Уменьшать да
Все-уменьшить да
Префиксная сумма да
Барьер нет
Собирать нет
Всесобрать нет
Разброс нет
Все-Всем нет или

Примечания

[ редактировать ]
  1. ^ Коллективные операции интеркоммуникатора . Стандарт интерфейса передачи сообщений (MPI), глава 7.3.1. Отдел математики и информатики Аргоннской национальной лаборатории .
  2. ^ Сандерс, Мельхорн, Дитцфельбингер, Дементьев 2019, с. 395
  3. ^ Сандерс, Мельхорн, Дитцфельбингер, Дементьев 2019, стр. 396-401.
  4. ^ Сандерс, Мельхорн, Дитцфельбингер, Дементьев 2019, стр. 402-403.
  5. ^ Сандерс, Мельхорн, Дитцфельбингер, Дементьев 2019, стр. 403-404.
  6. ^ Юань, Синь (февраль 2009 г.). «Алгоритмы полного сокращения оптимальной пропускной способности для кластеров рабочих станций» (PDF) . Журнал параллельных и распределенных вычислений . 69 (2).
  7. ^ Сандерс, Мельхорн, Дитцфельбингер, Дементьев 2019, стр. 404-406.
  8. ^ Сандерс, Мельхорн, Дитцфельбингер, Дементьев 2019, с. 408
  9. ^ Перейти обратно: а б Сандерс, Мельхорн, Дитцфельбингер, Дементьев 2019, стр. 412-413.
  10. ^ Сандерс, Мельхорн, Дитцфельбингер, Дементьев 2019, с. 413
  11. ^ Сандерс, Мельхорн, Дитцфельбингер, Дементьев 2019, стр. 413-418.
  12. ^ Сандерс, Мельхорн, Дитцфельбингер, Дементьев 2019, с. 394

Сандерс, Питер ; Мельхорн, Курт ; Дитцфельбингер, Мартин; Дементьев, Роман (2019). Последовательные и параллельные алгоритмы и структуры данных — базовый набор инструментов . Springer Nature Switzerland AG. ISBN  978-3-030-25208-3 .

Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 1261eb68bffefdfdaa9cde3c42e402e7__1709991600
URL1:https://arc.ask3.ru/arc/aa/12/e7/1261eb68bffefdfdaa9cde3c42e402e7.html
Заголовок, (Title) документа по адресу, URL1:
Collective operation - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)