- •Теории параллельных вычислений
- •Часть 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 Параллельные операторные схемы
- •Правило функционирования операторных схем
1. Понятия отношений. Классы эквивалентности
Имеем множества А и В (подразумеваются множества некоторых операторов), R – отношение из А и В. R связывает элементы множества А с элементами множества В.
a R b
а - элемент множества А;
b – элемент множества В.
Пример интерпретации отношения R:
Отношения сильной (слабой) зависимости;
Отношения сильной (слабой) независимости.
Свойства отношения R:
Симметричность
aRb => bRa
Рефлексивность
aRa
Транзитивность
aRb & bRc => aRc
Отношения порядка
Отношение порядка R задает некоторую строго определенную последовательность операторов в программе: aRb, bRc, …
Отношение R на множестве элементов (операторов) А является отношением порядка, если удовлетворяет свойствам:
Рефлексивность;
Транзитивность;
Антисимметричность
.
Отношение эквивалентности
R является отношение эквивалентности, если выполняются свойства:
Рефлексивность;
Симметричность;
Транзитивность.
Отношения частичного порядка
Свойства:
Антирефлексивность: aRa – не выполняется;
Транзитивность;
Антисимметричность.
Примеры отношений:
Эквивалентности - слабая независимость между операторами программы;
Частичный порядок - слабая зависимость между операторами.
Классы эквивалентности
Данное понятие связано с отношением эквивалентности между элементами.
Класс эквивалентности – это множество (для некоторого оператора А) элементов, связанных с А отношение эквивалентности.
[a] → {b| aRb}
Пример:
Если под отношением эквивалентности R подразумевать независимость операторов, то класс эквивалентности – это множество операторов, выполняемых независимо от А.
Отношение параллельности
Пусть
Oi
и Oj
некоторые вычислительные операции в
i-ом
участке программы.
- отношение параллельности. Тогда Oi1
Oi2.
Отношение является отношение эквивалентности, то есть удовлетворяет свойствам эквивалентности.
Для отношения определено множество операторов, выполняющихся независимо (параллельно) с данным, то есть класс параллельности для некоторого оператора:
[Oij] → { Oi2| Oij Oik }
Таким образом, операторы Oik, входящие в класс параллельности Oij выполняются независимо (параллельно с ним).
2. Понятие зависимостей между операторами программы
Два оператора Oi и Oj являются информационно-зависимыми, если Oj выполняется над результатами Oi (если Oi и Oj связаны отношением частичного порядка).
Операторы Oк и Oj являются зависимыми от Oi по управлению, если результат выполнения Oi определяет активацию либо Ok либо Oj (Oi предшествует Ok и Oj, а Oi является управляющим оператором).
Операторы Oi и Oj являются конкуренционнозависимыми, если для них не выполняется следующее соотношение:
In Oi ^out Oj = In Oj ^out O i = out Oi ^out Oj (1)
Отношение (1) - это условие отсутствия конкуренционной зависимости между операторами.
Различают два вида конкуренции:
Конкуренция за значение;
Конкуренция за переменные.
