- •Теории параллельных вычислений
- •Часть 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 Параллельные операторные схемы
- •Правило функционирования операторных схем
6.1 Постановка задачи распараллеливания
Любая операция аj , входящая в состав участка (выражения) представлена в виде:
аj
=
{j,
j,
in
аj,
out
аj,
wj,
| in
аj|,
| wj
| } (6)
| | - мощность (количество элементов, входящих в множество);
j - тип операции, определяет как выполнимое вычислительное действие, так и количество входных в операцию переменных.
in аj - множество переменных, являющихся входными в данный оператор аj;
out аj - множество результатов;
wj – множество номеров операций , использующих результаты данной j-ой операции;
j позволяет определить те выражения, на основании которых идентифицируется возможность выполнения данной j-ой операции на k-ый ярус ЯПФ.
Множество wj, использование которого определяет возможность вычленения последовательных операций на (к+1), (к+2), …, (к+n) ярусы ЯПФ.
Если обозначить через J множество номеров операций -го участка, то при
Wj = {j1, j2, j3, …, jn}
j J, j1 J, j2 J,, … , jn J
Требования для операций Ji
j
ji
(операция
не может использовать собственный
результат).Для любой операции ji in aji
aj
0. Таким образом, в Wj
перечисляются
номера всех операций, использующих
результаты j.Любая операция ji является входящей в участок программы:
ji J.
Правила построения таблицы для распараллеливания
Метод распараллеливания предполагает формирование множества операций: *At , +At , pAt , -At.
Для каждого дискретного момента времени, сопоставляемого с некоторым ярусом ЯПФ, таким образом, цель метода распараллеливания состоит в формировании указанных множеств. Реализация метода выполняется на основе таблицы №1, формируемой в соответствии с формулой (6).
Таблица №1 – Правила формирования множеств для распараллеливания
№ n/n |
Тип операции |
Входные операнды (dp1, dp2, …, dpn) |
Результаты dj |
Wj |
|in aj| |
| wj| |
Правила:
Первоначально в таблицу заносятся те операции, которые определяют действия присваивания внутренней переменной данной программы значений, являющихся входными в ней (унарные операции присваивания).
Нумерация операций выполняется в порядке их следования в программе. Каждая строка в таблице формируется в соответствии с записью 1.
Вычисления внутри каждого участка
должно заканчиваться выполнением
операции присваивания его результата
некоторой переменной.
Для реализации оптимального распараллеливания должно выполняться уникальное именование результатов каждой из операций.
6.2 Условия формирования множества *Aк (функция f1 - функция двумерной модели)
Готовность операции к выполнению (aj *Aк) :
*Aк
=
Для (7) - данная операция aj представляет собой присваивание значений внешних по отношению к участку внутренним в этом участке именам.
Для (8) – Out paij - множество переменных результатов, сформированных на предшествующих ярусах от 0 до (k-1), которые используются при вычислении данной операции aj.
Результирующий вид:
In
aj
