- •Теории параллельных вычислений
- •Часть 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 Распараллеливание программ с использованием моделей вычислительных процессов Модели программ
Свойства программ определяют их информационную структуру, которая характеризует ее элементы и связь их друг с другом. Возможны подходы к изучению информационной структуры:
Денотационный – исследование состояния памяти, соответствующих состояний переменных и изменение состояния памяти в ходе выполнения программы.
Операционный – исполнение программы представляется в виде набора исполняемых выполняемых операций, связанных между собой. Порождает графовые модели программ.
Графовые модели характеризуются:
Множеством вершин, соответствующих действиям в программе.
Множеством дуг, определяющих отношения разного вида (по управлению, по данным и т.д.).
Операционный подход определяет два типа данных (блоков) в моделях программ:
Преобразователи (выполняют действия с данными);
Распознаватели – определение порядка срабатывания преобразователей.
При обозначении через S – множество преобразователей, R – множество распознавателей, то
S R = 0
Определение видов графовых моделей будет осуществлено применительно к рассмотренному тексту программы:
X = (b1 – c1x)/a1
X = y
For i=2 to N do
X = (b1 – c1x)/a1
If (x
)
go to 7Y = x
End
Для данной программы должны быть определены данные:
b1, b2, …, bn
a1, a2, …, an
c1, c2, … , cn
Существуют два типа отношений между действиями в программе:
1.Выполнение одного действия непосредственно за другим. Запуск последующего действия выполняется после окончания реализации предшествующего. Такой тип отношений называют связью по управлению. То есть связь по управлению определяется последовательностью запуска операторов программы.
2. Информационный – характеризует использование аргументов для нижестоящих операторов, являющихся результатами операторов предшествующих (отношения связи по данным).
Оба типа отношений упорядочивают множество операторов в программе.
8.1 Граф управления
Вершина графа является оператором (преобразователь либо распознаватель). Между вершинами связей, определяется взаимодействие между операторами, соответствующее отношениям передачи управления.
Информационный граф программы
Основа графа – вершинный преобразователь. В результате граф определяет поток информации между операторами в программе. Дуги определяют отношения информационной зависимости между операторами – вершинами. Таким образом, вершины могут быть связаны дугами, если между ними существует информационная зависимость.
Выводы, связанные с внутренними свойствами программы:
Свойства программы характеризуются либо множеством операторов, либо множеством переменных, идентифицируемых на основе состояния памяти.
Система управляющих связей в программе (связей по управлению), определяющих последовательность или порядок задается в виде графа. Дуга графа определяет передачу управления между операторами. При разделении программы на операторы отсутствует информация о внутренней структуре оператора и структуре памяти.
Формализация представления управляющего графа программы
Задан алфавит символов, сопоставляемых с множеством операторов.
Операторы преобразователи и распознаватели. Функция L(p) сопоставляет некоторой вершине p графа оператор программы:
А = {a, b, …}, a A, L(p) = a.
Через L(p) обозначим оператор а, сопоставляемый с вершиной. Таким образом, граф может быть представлен в виде (G, L). G – множество вершин, L – некоторая разметка графа, сопоставляющая вершине определенные операторы.
Пример управляющего графа программы (рис.8):
Рисунок 8 – Пример управляющего графа
Транзитивные замыкания – метод потокового анализа программы предполагает транзитивные замыкания отношений следования между операторами программы (между вершинами управляющего графа).
При анализе потоков управления определяются отношения обязательного предшествования для операторов программы, вершин графа, то есть какие операторы должны предшествовать рассматриваемому. Аналогично определяются отношения обязательной преемственности (транзитивное замыкание тех вершин графа, которые являются последующими за данным).
