51
В течение каждой итерации алгоритма операции "сравнения-
обмена" выполняются только между соседними процессорами. Это
требует
Θ
(1) времени. Общее количество таких итераций - n; таким
образом, параллельное время выполнения алгоритма -
Θ
(n).
Рассмотрим теперь случай, когда число процессоров меньше, чем
длина сортируемой последовательности. Пусть p - число процессоров,
n - длина сортируемой последовательности, где p<n. Первоначально
каждый процессор получает блок
элементов, который может
быть упорядочен за время
pn /
log() ))//(( pnpn
каким-либо быстрым
алгоритмом сортировки. После этого процессоры выполняют p (
нечетных и
четных) итераций, выполняя операцию "сравнить и
разделить" (compare-split). Суть данной операции состоит в следующей
последовательности действий:
2/p
2/p
− соседние по кольцу процессоры передают копии своих
данных друг другу; в результате этих действий на каждом из
пар соседних процессоров будет располагаться одинаковый
набор двух блоков упорядочиваемых значений;
− далее на каждом процессоре имеющиеся блоки
объединяются при помощи операции слияния;
− затем на каждом процессоре блок удвоенного размера
разделяется на две части; после этого левый сосед
процессорной пары оставляет первую половину элементов (с
меньшими по значению элементами), а правый процессор пары
- вторую (с большими значениями данных).
По окончании p итераций алгоритма исходная последовательность
данных оказывается отсортированной.
7.1.5. Анализ эффективности
Оценим трудоемкость рассмотренного параллельного метода.
Длительность операций передачи данных между процессорами
полностью определяется топологией вычислительной сети. Если
логически соседние процессоры, участвующие в выполнении операции
"сравнить и разделить", являются близкими (например, для кольцевой
топологии сети), общая коммуникационная сложность алгоритма