Шаг 27.
Параллельные алгоритмы.
Методы построения параллельных программ. Метод сдваивания

    На этом шаге мы рассмотрим практическое применение каскадной схемы.

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


Рис.1. Метод сдваивания

    Если n - количество элементов массива, p - число процессоров, - время выполнения одной операции (одной задачи), то получим следующие оценки ускорения, эффективности и времени выполнения алгоритма:

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

Модифицированная каскадная схема

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


Рис.2. Модифицированная каскадная схема

    Показатели ускорения и эффективности модифицированной каскадной схемы определяются соотношениями:

    По сравнению с обычной каскадной схемой ускорение уменьшилось в 2 раза, но эффективность выросла почти до 0,5.

    На следующем шаге мы рассмотрим метод геометрического параллелизма.




Предыдущий шаг Содержание Следующий шаг