Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Konspekt_Trsipv_Ch_2.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
12 Мб
Скачать
☆

4.2 Процедура приводимости к ппф

Таким образом, указанные выше пункты 1-3 позволяют идентифицировать приводимость к ППФ установленной последовательности операторов. Если условия 1-3 не выполняются, то данная последовательность не приводит к ППФ и последовательность должна быть изменена. Изменение порядка предполагает, что операторы, использующие результаты вышестоящих должны следовать непосредственно за ними.

Алгоритм преобразования программы к ппф

  1. Заменить каждую максимально-параллельную цепочку параллельным групповым оператором ( оператор является либо параллельным участком или взаимно параллельными участками)

{ Si, Si+1, … , Si+n}

  1. Заменить каждую максимально последовательную цепочку последовательным групповым оператором:

{ Si → Si+1, Si+1 → Si+2, … , Si+(k-1) → Si+k} → Si+k

{ Si, Si+1, … , Si+k}

  1. Повторять шаги 1 и 2 до тех пор, пока не останется ни одной максимально паралельной либо максимально последовательной цепочек. В результате программа имеет вид одного участка, называемого ППФ.

Пример (на основе графа управления программой (рис .3)):

Рисунок 3 – Пример приведения программы К ППФ

4.3 Метод формирования параллельных групповых операторов

Обозначение множеств:

  1. U – множество всех Si операторов программы.

  2. Ui – множество операторов программы (элементарных и групповых, рассмотренных на i-ом шаге программы);

  3. i - множество всех параллельных групповых операторов программы, полученных до i-го шага и на i-м шаге включительно.

  4. i‘ - множество параллельных операторов, формирующих групповой оператор на i-ом шаге.

i-1 + i ‘ = i

  1. Ki – множество последовательных операций, не входящих в параллельные участки, то есть те операторы, для которых будет применяться алгоритм распараллеливания. Таким образом, метод формирования групповых операторов направлен на выделение из множества Ui всех операторов программы, множеств операторов являющихся параллельными и операторов, являющихся последовательными (не входящими в i‘).

Шаги алгоритма:

  1. Руководствуюсь понятиями зависимости и независимости операций сформировать матрице независимости C ipq для одиночных и групповых операторов, рассмотренных на i-м шаге. Строки p и столбцы q идентифицируются одинаковым образом операторами, рассмотренными на i-м шаге.

  2. Если операторы Si и Sq являются независимыми, то элемент С[p,q]=1.

  3. Для любого Sp обозначим С[p,q]=1 при p=q

  4. Обозначим

p={k, k+1, k+2, …}

q={…, m-2, m-1, m}

Алгоритм предполагает выделение последовательных операторов Sk, Sk+1, Sm-1, Sm, для которых выполнялось бы условие:

С[p,q]=1.

И при этом элементы С[p,q] образуют квадратную матрицу порядка n’ , где r n’ n

  1. Если таких матриц несколько, то выбирается та, у которой номера операторов являются наименьшими

Таким образом, операторы Sk, Sk+1 представляют собой вышестоящие операторы (индексы строк), Sm, Sm-1 – нижестоящие (индексы столбцов), а сама процедура определяет порядок просмотра матрицы независимости C ipq и выделения в ней квадратной матрицы. Сама последовательность Sk, Sk+1, Sm-1, Sm определяет независимые нижестоящие операторы от вышестоящих.

Пример:

Матрица (2) не может быть интерпретирована, так как номера операторов в ней больше, чем в (1). Матрица (3) не может быть интерпретирована, так как по ней не может быть сформирована последовательность операторов Sk, Sk+1, Sm-1, Sm, где Sk – вышестоящие операторы программы.

  1. Отнести сформированную последовательность к множеству i‘ (параллельных операторов, выделяемых на i-ом шаге), остальные операторы к множеству ki.

  2. На основе множества i‘ сформировать параллельный групповой оператор, рассмотренный в множестве Ui+1.

Таким образом, на основе анализа множества i‘ может быть осуществлено разворачивание ППФ к ее графу параллельного выполнения.

Пример разворачивания: Un = {S7, } представлен на рис .4.

Рисунок 4 – Пример разворачивания ППФ(1)

Un-1 = { }

n-1 = { }

Un-2 = { }

Un-3 = { }

Un-4 = { }

n-4 = { S4, S5}

Un-5 = { S1, S2, S3, S4, S5, S6, S7 }

n-4‘ = { S1, S2}

Рисунок 5 - Пример разворачивания ППФ(2)

Прямая процедура предполагает формирование множеств Ui, i’ при разворачивании ППФ множество интерпретируется в обратном порядке шагов.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]