- •Теории параллельных вычислений
- •Часть 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 Параллельные операторные схемы
- •Правило функционирования операторных схем
Формализация процедуры определения транзитивного прообраза вершины
T(n+1) = T(n) T-1 (S(n))
S(n+1) = T(n+1) \ T(n)
T-1 (S(n)) – непосредственный прообраз вершин множества S(n), то есть те вершины, из которых ведут дуги в вершины множества S(n).
S0 = {ak31}, T0 = 0
T1 = {ak21 } = {ak21}
S1 = {ak21 }
T2 = {ak21 } {ak11} = {ak21, ak11}
S2 = { ak11}
T3 = {ak21, ak11} {ak21, ai}
T3 = {ai}
Таким образом, T(N) (N – число шагов) является множеством вершин (операторов) от выполнения которых зависит (непосредственно или опосредовано) выполнение оператора aj. То есть T(N) – это некоторый путь на графе, ведущий из начальной вершины в рассматриваемую aj.
S(N) - множество тех вершин графа, которые должны выполняться на n-ом шаге алгоритма (n-ом ярусе ЯПФ) для того, чтобы впоследствии была активизирована вершина aj.
8.6 Алгоритм формирования параллельной формы программы по графу управления на основе понятия транзитивного образа замыкания вершины
Через Га – множество вершин, в которые ведут дуги из данной вершины. Так как S(N) - множество вершин, выполняющихся на n-ом ярусе, то последовательность определения этих множеств при разных n может быть представлена в виде:
S(n) = {a |a
,
Гa
=
}
(1)S(n-1) = {a |a , Гa
S(n)
} (2)S(n-2) = {a |a , Гa { S(n-1) S (n) }} (3)
……………
n.
S(0)
=
{a |a
,
Гa
}
(n)
Выражение (1) определяет множество вершин (листьев дерева), из которых не ведут дуги (множество Гa является пустым).
Выражение (2) определяет те вершины, которые соединены дугами с вершинами множества S (n).
….
Пример: формирование ППФ начинается с последнего яруса и заканчивается нулевым ярусом в корне дерева (рис. 10)
Рисунок 10 - Формирование ППФ
S(n)
=
{a9,
a10
| Гa9
=
| Гa10
=
}
S(n-1) = {a6, a8 }
Г {a6} = {a9}
Г {a5} = {a9}
Г {a7} = {a10}
Г {a4} = {a10}
Г {a2} = {a4}
Г {a4} = {a6, a10}
Г {a8} = {a10}
S(n-2)
=
{a4,
a5,
a7
|
Гa4
=
Гa5
=
Гa7= }
S(n-3) = {a2, a3}
S(n-4) = S(0) = {a1}
8.7 Алгоритм распараллеливания на основе понятия прообраза
Г -1а – вершины, из которых ведут дуги в данную вершину а, тогда Г -1а – некоторый путь на графе, то есть множество вершин {ak, ak+1, …, ak+n }, которые находятся на пути к вершине а.
Последовательность шагов алгоритма формирования ЯПФ:
S(0)
=
{a |a
,
Г
-1a
=
}
(1)
S(1)
=
{a |a
,
Г
-1a
S(0)
}
(2)
S(2) = {a |a , Г -1a {S(0) S(1)} } (3)
…………..
S(n)
=
{a |a
,
Г
-1a
}
(4)
Выражение (1) определяет те вершины, в которые не ведут дуги.
Выражение (2) определяет те вершины, в которые идут дуги из вершин множества S(0).
Выражение (3) определяет те вершины, в которые идут дуги из вершин вышестоящих 0,1 и т.д.
Пример:
S(0) = {a1 |a , Г -1a = }
S(1) = {a2, a3, a5 |a , Г -1a2 = 1, Г -1a3 = 1, Г -1a5 = 1 }
Синтез параллельных программ на основе вычислительных моделей
Алгоритм формирования ППФ предполагает:
Построение на основе блок-схемы программы (ее алгоритма) стандартной схемы программы.
Построение на основе стандартной схемы программы графа зависимостей операторов (А-схем).
Формирование на основе А-схемы ярусно-параллельной формы программы (ЯПФ).
Отличием стандартной схемы от блок-схемы программы является отображение (графическое) на каждом операторе входных и выходных переменных.
