- •Теории параллельных вычислений
- •Часть 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 Параллельные операторные схемы
- •Правило функционирования операторных схем
Понятие линейной программы
Программа является линейной, если представляет собой последовательность операторов, не содержащую операторов цикла и условного перехода (циклы и совокупности операций с передачей управления должны рассматриваться как единые вычислительные блоки программы).
Формализация понятий зависимости и независимости между операторами программы
Понятие множеств переменных, используемых в программе
Множеством C (P) изменяемых переменных программы называются переменные, которые в ходе выполнения программы P меняют свое значение хотя бы один раз.
C (Si), где Si – некоторый оператор, входящий в программу.
R(P) – упоминаемые (используемые) переменные программы P (множества), называются переменные участвующие при выполнении некоторых операций в программе.
R (Si) - множество упоминаемых переменных некоторого оператора Si.
Таким образом, упоминаемые переменные R (P), те, которые используются при вычислении переменных множества C(P).
Если через Si обозначить некоторый вычислительный блок, R(P) и C(P) могут быть представлены виде:
R(P)
={ x
| x
R(
)
={ xi
1, xi
2, xi
3, … , xi
m,}
C(P)
={ y
| y
C( ) ={ yi 1, yi 2, yi 3, … , yi m,},
где n – число операторов в программе Р, в которой выполняются вычисления; m – количество элементов в соответствующих множествах, связанных с .
C(P)
R(P)
позволяет изучить все возможные
переменные программы.
V(P)
= C(P)
R(P)
V(
i)
= C (
i)
R(
i)
Понятие входных переменных в программе
Входные переменные образуют множество I(P), формализуемое в виде:
I(P)
={
| x
(x1,
x2,
…, xx-1)
, где
n – Количество операторов в программе;
i – Текущая операция.
Множества
Переменная x является используемой (упоминаемой) в операторе iи ее значение не получено в любом из предшествующих i-му оператору.
Множество входных переменных программы:
O(P)
={
|Y
C
(Si+1,
Si+2
, … , Sn)}
Оператор
Y
должен быть результатом
и
не изменяться во всех последующих
операциях.
I(P)V(P),
O(P)V(P).
Операции (операторы) в программе могут быть связаны различными отношениями зависимости и независимости.
Отношениями зависимости и независимости операций
3.1 Непосредственная (сильная) зависимость операций
Оператор Sj называется непосредственно зависимым от оператора Si (обозначается Si Sj, i j ) если:
а). C(Si) R(Sj) 0
То есть изменяемые оператором Si переменные является упоминаемыми (используемыми) в операторе Sj.
б). Нет такой совокупности операторов (операций) Sk1, Sk2, Sk3,…, Skl
(ik1 k2 k3… kl), для которой при p i, k1, k2,…, kl ,
g k1, k2,…, kl, j и pg имело бы место одно из соотношений
C’(Sp) C(Sg)
То есть изменяемые переменные операции (оператора) Sp не должны входить как подмножество в изменяемые переменные операции Sg – изменяемые переменные исходной операции не могут быть изменены до требуемой (конечной) операции. Имеет место соотношение:
C(Si)
R(Sj)
=
(Skr),
где
C’(Skr)
C(Skr),
i
kr
j,
r=
, т.е. изменяемые переменные в операции
Si,
фигурирующие в качестве используемых
(упоминаемых) в операторе Sj,
не могут быть изменены промежуточными
операторами Skr).
