Гиперкуб (шаблон связи)
Трехмерный гиперкуб — это сетевая топология для параллельных компьютеров с элементы обработки. Топология позволяет эффективно реализовать некоторые базовые коммуникационные примитивы, такие как Broadcast , All- Ruce и Prefix sum . [1] Элементы обработки пронумерованы. через . Каждый обрабатывающий элемент соседствует с обрабатывающими элементами, номера которых отличаются одним и только одним битом. Алгоритмы, описанные на этой странице, эффективно используют эту структуру.
Схема алгоритма
[ редактировать ]Большинство коммуникационных примитивов, представленных в этой статье, имеют общий шаблон. [2] Первоначально каждый обрабатывающий элемент имеет одно сообщение, которое должно достичь всех остальных обрабатывающих элементов в ходе работы алгоритма. Следующий псевдокод описывает необходимые шаги связи. Таким образом, Initialization , Operation и Output являются заполнителями, которые зависят от данного коммуникационного примитива (см. следующий раздел).
Input: message . Output: depends on Initialization, Operation and Output. Initialization for do Send to Receive from Operation endfor Output
Каждый обрабатывающий элемент перебирает своих соседей (выражение отрицает -й бит двоичное представление, таким образом получая номера его соседей). На каждой итерации каждый обрабатывающий элемент обменивается сообщением с соседом и впоследствии обрабатывает полученное сообщение. Операция обработки зависит от примитива связи.
Примитивы связи
[ редактировать ]Префиксная сумма
[ редактировать ]В начале операции суммирования префиксов каждый обрабатывающий элемент владеет сообщением . Цель — вычислить , где является ассоциативной операцией. Следующий псевдокод описывает алгоритм.
Input: message of processor . Output: prefix sum of processor . for do Send to Receive from if bit in is set then endfor
Алгоритм работает следующим образом. Заметим, что гиперкубы размерности можно разбить на два гиперкуба размерности . Назовите субкуб, содержащий узлы с ведущим 0, как 0-субкуб, а субкуб, состоящий из узлов с ведущей 1, как 1-субкуб. После того, как оба субкуба вычислили сумму префикса, сумма по всем элементам в кубе с 0 субкубами должна быть добавлена к каждому элементу в кубе с 1 субкубом, поскольку каждый обрабатывающий элемент в кубе с 0 субкубами имеет более низкий ранг. чем обрабатывающие элементы в 1-субкубе. Псевдокод сохраняет сумму префикса в переменной и сумма по всем узлам субкуба в переменной . Это позволяет всем узлам в кубе с 1 суб-юнитом получать сумму по кубу с 0-ю субтитровами на каждом этапе.
Это приводит к коэффициенту для и фактор для : .
Все собрать/все уменьшить
[ редактировать ]Операции по сбору всех данных начинаются с того, что каждый элемент обработки имеет сообщение. . Цель операции состоит в том, чтобы каждый обрабатывающий элемент знал сообщения всех других обрабатывающих элементов, т.е. где является конкатенация. Операцию можно реализовать по шаблону алгоритма.
Input: message at processing unit . Output: all messages . for do Send to Receive from endfor
С каждой итерацией длина передаваемого сообщения удваивается. Это приводит к тому, что время выполнения .
Тот же принцип можно применить к операциям All-Reduce , но вместо объединения сообщений выполняется операция сокращения двух сообщений. Итак, это операция сокращения , результат которой известен всем процессорам. По сравнению с обычной операцией сокращения, за которой следует широковещательная рассылка, All-Reduce в гиперкубах уменьшает количество шагов связи.
Все на все
[ редактировать ]Здесь каждый обрабатывающий элемент имеет уникальное сообщение для всех остальных обрабатывающих элементов.
Input: message at processing element to processing element . for do Receive from processing element : all messages for my -dimensional sub cube Send to processing element : all messages for its -dimensional sub cube endfor
С каждой итерацией сообщение приближается к месту назначения на одно измерение, если оно еще не пришло. Следовательно, все сообщения достигли цели не более чем через шаги. На каждом шагу, сообщения отправляются: в первой итерации половина сообщений не предназначена для собственного субкуба. На каждом последующем шаге субкуб становится вдвое меньше предыдущего, но на предыдущем шаге от другого обрабатывающего элемента поступило ровно такое же количество сообщений.
Это приводит к тому, что время выполнения .
ESBT-трансляция
[ редактировать ]Алгоритм ESBT-broadcast (Edge-disjoint Spanning Binomial Tree) [3] — это конвейерный алгоритм широковещательной передачи с оптимальным временем выполнения для кластеров с топологией сети гиперкуб. Алгоритм встраивает биномиальные деревья, не пересекающиеся по ребрам в гиперкубе, такие, что каждый сосед обрабатывающего элемента является корнем остовного биномиального дерева на узлы. Чтобы передать сообщение, исходный узел разбивает свое сообщение на куски одинакового размера и циклически отправляет их в корни биномиальных деревьев. Получив фрагмент, биномиальные деревья транслируют его.
Время выполнения
[ редактировать ]На каждом этапе исходный узел отправляет один из своих куски в биномиальное дерево. Трансляция фрагмента внутри биномиального дерева занимает шаги. Таким образом, требуется шаги по распределению всех кусков и дополнительно шагов до тех пор, пока не завершится последняя трансляция биномиального дерева, что приведет к шаги в целом. Таким образом, время выполнения сообщения длиной является . С оптимальным размером куска , оптимальное время работы алгоритма равно .
Построение биномиальных деревьев
[ редактировать ]В этом разделе описывается, как систематически строить биномиальные деревья. Сначала построим одно биномиальное остовное дерево von узлы следующим образом. Пронумеруйте узлы из к и рассмотрим их двоичное представление. Затем дочерние элементы каждого узла получаются путем отрицания одиночных ведущих нулей. В результате получается одно биномиальное остовное дерево. Чтобы получить копии дерева, не пересекающиеся по ребрам, переместите и поверните узлы: для -я копия дерева, примените операцию XOR с к каждому узлу. Затем поверните вправо все узлы на цифры. Полученные биномиальные деревья не пересекаются по ребрам и, следовательно, удовлетворяют требованиям алгоритма ESBT-вещания.
Ссылки
[ редактировать ]- ^ Грама, А. (2003). Введение в параллельные вычисления. Эддисон Уэсли; Ауфляж: 2-е изд. ISBN 978-0201648652 .
- ^ Фостер, И. (1995). Проектирование и создание параллельных программ: концепции и инструменты для параллельной разработки программного обеспечения. Эддисон Уэсли; ISBN 0201575949 .
- ^ Джонсон, СЛ; Хо, К.-Т. (1989). «Оптимальное вещание и персонализированное общение в гиперкубах». Транзакции IEEE на компьютерах . 38 (9): 1249–1268. дои : 10.1109/12.29465 . ISSN 0018-9340 .