- •Теории параллельных вычислений
- •Часть 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 Параллельные операторные схемы
- •Правило функционирования операторных схем
3.2 Слабая зависимость операций
Слабая
зависимость представляет собой
реализацию цепочки сильных зависимостей.
Оператор Sj
называется слабо зависимым от оператора
Si,
если (Si
Sj):
1. Либо Si → Sj.
2. Либо:
Имеется непустая совокупность операторов Sk1, Sk2, Sk3,…, Skl
(ik1 k2 k3… kl< j), такая что
C(Sp) R(Sg) 0
( p= i, k1, k2, …, kl; g= k1, k2, k3,…, kl, j; p <g), т.е. переменные, полученные в качестве результирующих в операции Sp (изменяемые переменные) могут быть использованы (упомянуты) в операциях Sg до операции Sj и результаты операции Sg используются в операции Sj.
Нет таких операторов (операций) Sr (p< r< g), таких что
C(Sp)C(Sr)0 и C(Sp)C(Sr) R(Sg)
(обозначения для p и g аналогично выше приведенным) – т.е. переменные, изменяемые как в Sp, так и в Sr не могут быть использованы (упомянуты) в операторе Sg; если переменная, измененная в операторе (операции) Si, изменяется в промежуточной операции Sr, то она не может быть используемой в операции Sj. Переменные, изменяемые в Si, используются при вычислении результатов в промежуточном операторе, результаты этого промежуточного оператора не должны изменяться до оператора Sj.
Примеры сильной и слабой зависимостей (изображены на рис.1):
Рисунок 1 – Примеры сильной и слабой зависимостей
3.3 Слабая независимость операций
Операторы
Si
и Sj
слабо независимы (Si
Sj),
если:
a). Либо C(Si)R(Si) = 0;
C(Sj)R(Si) = 0, т.е. изменяемые в операции Si переменные не упоминаются (не используются) в операции Sj. Указанные выражения комментируют отсутствие информационной зависимости оператора Sj от оператора Si , а также отсутствие конкуренции за значение переменных между этими операторами.
б). И нет пустой совокупности операций Sk1, Sk2, Sk3,…, Skl, что имело бы место условие слабой зависимости между операторами.
в).
(Sp)
R
(Sq)
0
(Sp’)
R
(Sq’)
0, где
p = { i, k1, k2, …, kl};
g= {k1, k2, k3, …, kl, j};
p’ = { i, k1, k2, …, kl};
g’= {k1, k2, k3, …, kl, j};
г). Либо имеется операция (оператор) Sk такой, что
C(Si)=C(Sk), (2)
где i<k<j и Sk слабо независим от Si.
Промежуточный оператор переопределяет множество результатов, полученных в операторе Si, поэтому Sj является независимым от Si информационно.
3.4 Сильная независимость операций
Операторы
Si
и Sj
сильно независимы (
),
если либо
а). Если выполняется условие
C(Si) V(Sj) = 0; C(Sj) V(Si) = 0,
Выражения определяют отсутствие конкуренционных зависимостей между операторами Sj и Si.
б). Если есть хотя бы один оператор Sk, i< k< j, что имеет место условие (2) и Sk сильно независим от Si. В противном случае операции Si и Sj сильно зависимы.
в). Не существует такой промежуточной совокупности операторов Sk1, Sk2, Sk3,…, Skl, для которых выполнялось бы условие слабой зависимости:
C(Sp) R(Sg) 0
( p= i, k1, k2, …, kl; g= k1, k2, k3,…, kl, j; p <g),
Таким образом, сильная независимость гарантирует безразличное по отношению к порядку следования выполнение программы. То есть результат выполнения программы Р не зависит от порядка выполнения операторов Si и Sj.
Слабая независимость между операторами допускает наличие конкуренции за значение, тогда для безразличного характера выполнения оператора необходимо, чтобы оператор Si начинался раньше, чем Sj.
