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

4.1 Условия приводимости к ппф

Для того, чтобы линейная программа была приводимой к ППФ, необходимо и достаточно, чтобы для каждой пары ее взаимно независимых операторов Si и Sj и для каждого Sk N2 (Si, Sj), где i< k< j (т.е. Sk лежит между Si и Sj) имело место условие

N1 (Si, Sj)3*( Sk), (5)

Где N1 (Si, Sj)=3*( Si)3*( Sj), N2 (Si, Sj)=3*( Si)3*( Sj)- N1 (Si, Sj),

*

3*( Sk)=S SkS

Т.о. множество 3*( Sk) состоит из элементов сильно зависящих от Sk, операцию Sk можно определить как операцию, разделяющую одну параллельную линейную цепочку от другой линейной цепочки.

Из анализа теоремы видно, что любое распараллеливание последовательных программ начинается с построения множества входных и выходных переменных для каждой операции (оператора, блока) и выявления независимых операций в программе, для которых проверяется выполнение условия (5).

В том случае, если для линейной программы условие (5) выполняется, для не существует ППФ и при том единственная.

Упрощенная интерпретация условия

  1. Si и Sj - независимы;

  2. Между Si и Sj имеется оператор Sk ;

  3. Для Sk выполняется:

Sk N2 (Si, Sj), где i< k< j при N1 (Si, Sj)3*( Sk).

Пояснение к условию

Множество 3*( Si) – это множество всех операторов, зависящих от Si слабо.

N1 (Si, Sj) - это множество операторов, зависящих как от Si , так и от Sj. Если Si и Sj - независимы, то могут выполняться параллельно, то есть находиться в параллельных ветвях. Следовательно, N1 – это те элементы, которые являются точками слияния параллельных ветвей.

N2 (Si, Sj) – это операторы, зависящие либо от Si либо от Sj, тогда Sк , входящее в N2 – это оператор, принадлежащий одной из параллельных ветвей (если Sk принадлежит ветви, то оператор в N1 автоматически зависит от Sk).

Для того, чтобы программа Р по отношению к операторам Si и Sj была приводима к ППФ необходимо:

  • Чтобы операторы Si и Sj были независимыми;

  • Чтобы между ними находился оператор Sк, от которого зависит оператор, являющийся точкой слияния параллельных ветвей.

П ример:

S1 → S5

S2 → S5

S3 → S6

S4 → S6

S5 → S7

S6→S7

Выполним проверку условий для операторов S1 и S3:

  1. S1, S3 - независимы;

  2. S2 между S1 и S3;

  3. N2 (S1, S3)={ S5, S6, S7}\ { S7} ={ S5, S6}

N1(S1, S3) = { S7}

3*( S2)=S5, S7

N1 (S1, S3)3*( S2) (6)

Так как не выполняется условие, S2 входит в N2 хотя выполняется условие (6), то данная форма не может быть приведена к ППФ.

Правило:

В том случае, если для данной последовательности операторов условие приводимости не выполняется, в исходной линейной программе должен быть изменен порядок следования операторов.

Правило изменения порядка:

Если программа к ППФ не приводится, то операторы, использующие результаты вышестоящих, должны следовать непосредственно за ними.

S1→S3

S2→S3

S4→S6

S5→S6

S3→S7

S6→S7

  1. S1 и S4

  2. S2 и S3 между S1 и S4

  3. N1 (S1, S4 )= {S7}

N2 (S1, S4 )= {S7, S6}

3*( S3)= S7  =>

S3 N2 (S1, S4 ) и N1 (S1, S4 )3*( S3)

Таким образом, для операторов S1 и S4 программа является приводимой к ППФ.

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