- •Теории параллельных вычислений
- •Часть 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 Параллельные операторные схемы
- •Правило функционирования операторных схем
8.2 Понятие графа зависимости между операторами
Информационные связи между операторами могут быть определены на графе зависимости. Две операции являются зависимыми, если при выполнении они обращаются к одной и той же переменной (ячейке памяти). То есть, информационная зависимость реализуется выполнением операции чтения – запись над одной и той же переменной программы.
Пример графо зависимости:
Переменные Х, У, изменяемые в ходе выполнения программы. Значения Х,У определяются в операторах 1,2,4,6. Тогда вид графо зависимости:
Вывод, таким образом, информационный граф программы является подграфом зависимости. Из графа зависимости вытекает понятие графа влияния программы.
8.3 Граф влияния
Транзитивное замыкание непосредственных зависимостей позволяет получить граф влияния. Операция программы влияет на другую (транзитивная зависимость), если изменяющиеся значения переменной, которые вычисляются в перовой операции, влияют на изменение значений переменной, вычисляемой в другой операции, таким образом, граф влияния предполагает соединение дугой каждой пары вершин, в которых одна операция влияет на другую (направление дуги графа совпадает с направлением влияния между оператором). Отношения управления информационной связью и зависимости не являются транзитивными, отношения влияния транзитивны. Граф влияния – это представление транзитивного замыкания графо зависимости.
Пример:
Изменение значений в 1 и 2 влияет на 4 и 6.
8.4 Теоретико-графовый подход к распараллеливанию алгоритмов
Задача
представляется в виде последовательности
операторов А = {a1,
a2,
a3,
…,
an}.Задача
распараллеливания состоит в выделении
из множества Ф подмножества
i
взаимно
независимых операторов, где i
определяет некоторый ярус ЯПФ. Через
0
могут
быть обозначены операторы, зависящие
от входных данных программы. Для
совокупности подмножеств
i
выполняется
условие:
i
,i
j
=
0,
= A
Задача распараллеливания может быть сформирована в соответствии с теорией графов.
Множество А представляется в виде графа G: G (A,Г),
Где
аi,
aj
,
(аi,
aj)
Г
Дуга (аi, aj) соединяет две вершины в случае если результат i-го оператора является аргументом для j-го.
Обозначения:
Г
j
- множество вершин, последующих за j-м
ярусом, в которые ведут дуги из операторов
данного j-го
яруса, тогда
i
- некоторое подмножество Г
j,
то
есть множество вершин i-го
яруса, в которые ведут дуги из вершин
j-го
яруса (множество
j).
Г
j
- множество вершин графа последующих
ярусов, в которые ведут дуги из данного
оператора aj,
тогда ai
Г
j
(наличие
дуги, ведущей из оператора aj
в
ai
). Таким образом, Г
j
и
Г
j
определяют
множество вершин, соединенных дугами
с вершинами множества
j
либо
с вершинами
j.
Тогда распараллеливание – это задача
разбиения вершин графа на подмножества
j,
так,
чтобы удовлетворить введенные условия
(1,2,3) и множество
j
является
подмножеством Г
j.
Для
каждой операции ai
S
предполагается
наличие другой операции
ai
S-1,
aj
Гaj.
