ПАРАЛЛЕЛЬНОЕ ПРОГРАММИРОВАНИЕ
13
Типовые топологии представлены на рис. 1.2:
•
полный граф
(
completely-connected graph or clique
) - система, в которой
между любой парой процессоров существует прямая линия связи; данная
топология обеспечивает минимальные затраты при передаче данных, одна-
ко является сложно реализуемой при большом количестве процессоров;
•
линейка
(
linear array or farm
) - система, в которой каждый процессор име-
ет линии связи только с двумя соседними (с предыдущим и последующим)
процессорам; такая схема является, с одной стороны, просто реализуемой, а
с другой - соответствует структуре передачи данных при решении многих
вычислительных задач (например, при организации конвейерных вычисле-
ний);
•
кольцо
(
ring
) - данная топология получается из линейки процессоров
соединением первого и последнего процессоров линейки;
•
звезда
(
star
) - система, в которой все процессоры имеют линии связи с не-
которым управляющим процессором; данная топология является эффек-
тивной, например, при организации централизованных схем параллельных
вычислений;
•
решетка
(
mesh
) - система, в которой граф линий связи образует прямо-
угольную сетку (обычно двух- или трехмерную); подобная топология мо-
жет быть достаточно просто реализована и, кроме того, эффективно ис-
пользуема при параллельном выполнении многих численных алгоритмов
(например, при реализации методов анализа математических моделей, опи-
сываемых дифференциальными уравнениями в частных производных);
•
гиперкуб
(
hypercube
) - данная топология представляет частный случай
структуры решетки, когда по каждой размерности сетки имеется только два
процессора (т.е. гиперкуб содержит 2
N
процессоров при размерности
N
);
данный вариант организации сети передачи данных достаточно широко
распространен в практике и характеризуется следующим рядом отличи-
тельных признаков:
o
два процессора имеют соединение, если двоичное представление их
номеров имеет только одну различающуюся позицию;
o
в
N
-мерном гиперкубе каждый процессор связан ровно с
N
соседями;
o
N
-мерный гиперкуб может быть разделен на два (
N
– 1)-мерных
гиперкуба (всего возможно
N
различных таких разбиений);
o
кратчайший путь между двумя любыми процессорами имеет длину,
совпадающую с количеством различающихся битовых значений