- •Теории параллельных вычислений
- •Часть 2
- •Теории параллельных вычислений. Часть 2. Методические указания / Сост. К.В.Кротов - Севастополь: Изд-во СевНту, 2009.- 81 с.
- •Содержание
- •1. Понятия отношений. Классы эквивалентности
- •2. Понятие зависимостей между операторами программы
- •Отношениями зависимости и независимости операций
- •3.1 Непосредственная (сильная) зависимость операций
- •Понятие линейной программы
- •Понятие множеств переменных, используемых в программе
- •Понятие входных переменных в программе
- •3.2 Слабая зависимость операций
- •3.3 Слабая независимость операций
- •3.4 Сильная независимость операций
- •Свойства отношений зависимости и независимости между операциями
- •Алгоритм распараллеливания последовательных программ путем приведения их к полной параллельной форме (ппф)
- •4.1 Условия приводимости к ппф
- •Упрощенная интерпретация условия
- •Пояснение к условию
- •Правило изменения порядка:
- •4.2 Процедура приводимости к ппф
- •Алгоритм преобразования программы к ппф
- •4.3 Метод формирования параллельных групповых операторов
- •Особенности распараллеливания программы путем приведения ее к ппф
- •5.1 Понятие двумерной модели вычислительного процесса
- •5.2 Уточнение множеств двумерной модели вычислительного процесса
- •6 Распараллеливание программ с использованием понятия модели вычислительного процесса Понятие операции и выражения
- •6.1 Постановка задачи распараллеливания
- •Правила построения таблицы для распараллеливания
- •6.2 Условия формирования множества *Aк (функция f1 - функция двумерной модели)
- •Условие бесконфликтности
- •6.3 Правила построения япф программы
- •6.4 Формализация условий вынесения операций ai на k-ый ярус япф
- •Операции с тремя входами
- •7 Распараллеливание программ на основе понятий примитивно-вычислимых и частично-вычислимых функций Понятие вычислимых и рекурсивных функций
- •7.1 Задание рекурсивных функций (Формирование процесса задания алгоритма вычислимых функций)
- •7.2 Суперпозиция вычислимых функций Задание области определения для оператора суперпозиции вычислимых функций
- •7.3 Оператор примитивной рекурсии
- •7.4 Распараллеливание алгоритмов примитивной рекурсии
- •7.5 Распараллеливание простейших аддитивных и мультипликативных функций
- •7.6 Операторы представления суперпозиции и примитивной рекурсии
- •Суперпозиция
- •Оператор рекурсии
- •7.7 Обобщенная форма операторов суперпозиции и рекурсии
- •7.8 Обобщенный вид оператора рекурсии
- •7.9 Обобщенный вид оператора суперпозиции для множественного потока данных
- •8 Распараллеливание программ с использованием моделей вычислительных процессов Модели программ
- •8.1 Граф управления
- •Информационный граф программы
- •8.2 Понятие графа зависимости между операторами
- •8.3 Граф влияния
- •8.4 Теоретико-графовый подход к распараллеливанию алгоритмов
- •8.5 Транзитивные замыкания
- •Формирование транзитивного замыкания
- •Формализация транзитивного замыкания (транзитивного образа вершины)
- •Формализация процедуры определения транзитивного прообраза вершины
- •8.6 Алгоритм формирования параллельной формы программы по графу управления на основе понятия транзитивного образа замыкания вершины
- •8.7 Алгоритм распараллеливания на основе понятия прообраза
- •8.8 Приведение стандартной схемы программы к ярусно-параллельной форме
- •Модели параллельных процессов
- •9 Сети петри
- •Алгоритм функционирования сети Петри
- •Возможности применения сетей Петри
- •10 Графовые модели. Общие понятия
- •10.1 Модель биологического графа
- •Правило функционирования моделей биологических графов
- •10.2 Модель модифицированного биологического графа
- •11.1 Алгоритм формирования а-схемы
- •11.2 Понятие спусковых и управляющих функций
- •11.3 Функционирование a-схем
- •11.4 Понятие вычислительного процесса
- •Аксиомы вычислительного процесса
- •Требования информационного обеспечения оператора а
- •11.5 Понятие конечного автомата (ка)
- •11.6 Логические рассуждения. Комментирование функционирования ка
- •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 SkS
Т.о. множество 3*( Sk) состоит из элементов сильно зависящих от Sk, операцию Sk можно определить как операцию, разделяющую одну параллельную линейную цепочку от другой линейной цепочки.
Из анализа теоремы видно, что любое распараллеливание последовательных программ начинается с построения множества входных и выходных переменных для каждой операции (оператора, блока) и выявления независимых операций в программе, для которых проверяется выполнение условия (5).
В том случае, если для линейной программы условие (5) выполняется, для не существует ППФ и при том единственная.
Упрощенная интерпретация условия
Si и Sj - независимы;
Между Si и Sj имеется оператор Sk ;
Для 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:
S1, S3 - независимы;
S2 между S1 и S3;
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
S1 и S4
S2 и S3 между S1 и S4
N1 (S1, S4 )= {S7}
N2 (S1, S4 )= {S7, S6}
3*( S3)= S7 =>
S3 N2 (S1, S4 ) и N1 (S1, S4 )3*( S3)
Таким образом, для операторов S1 и S4 программа является приводимой к ППФ.
