- •Теории параллельных вычислений
- •Часть 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 Параллельные операторные схемы
- •Правило функционирования операторных схем
4.2 Процедура приводимости к ппф
Таким образом, указанные выше пункты 1-3 позволяют идентифицировать приводимость к ППФ установленной последовательности операторов. Если условия 1-3 не выполняются, то данная последовательность не приводит к ППФ и последовательность должна быть изменена. Изменение порядка предполагает, что операторы, использующие результаты вышестоящих должны следовать непосредственно за ними.
Алгоритм преобразования программы к ппф
Заменить каждую максимально-параллельную цепочку
параллельным групповым оператором (
оператор является либо параллельным
участком или взаимно параллельными
участками)
{ Si, Si+1, … , Si+n}
Заменить каждую максимально последовательную цепочку
последовательным групповым оператором:
{ Si → Si+1, Si+1 → Si+2, … , Si+(k-1) → Si+k} → Si+k
{
Si,
Si+1,
… , Si+k}
Повторять шаги 1 и 2 до тех пор, пока не останется ни одной максимально паралельной либо максимально последовательной цепочек. В результате программа имеет вид одного участка, называемого ППФ.
Пример
(на основе графа управления программой
(рис .3)):
Рисунок 3 – Пример приведения программы К ППФ
4.3 Метод формирования параллельных групповых операторов
Обозначение множеств:
U – множество всех Si операторов программы.
Ui – множество операторов программы (элементарных и групповых, рассмотренных на i-ом шаге программы);
i
-
множество всех параллельных групповых
операторов программы, полученных до
i-го
шага и на i-м
шаге включительно.i‘ - множество параллельных операторов, формирующих групповой оператор на i-ом шаге.
i-1 + i ‘ = i
Ki – множество последовательных операций, не входящих в параллельные участки, то есть те операторы, для которых будет применяться алгоритм распараллеливания. Таким образом, метод формирования групповых операторов направлен на выделение из множества Ui всех операторов программы, множеств операторов являющихся параллельными и операторов, являющихся последовательными (не входящими в i‘).
Шаги алгоритма:
Руководствуюсь понятиями зависимости и независимости операций сформировать матрице независимости C ipq для одиночных и групповых операторов, рассмотренных на i-м шаге. Строки p и столбцы q идентифицируются одинаковым образом операторами, рассмотренными на i-м шаге.
Если операторы Si и Sq являются независимыми, то элемент С[p,q]=1.
Для любого Sp обозначим С[p,q]=1 при p=q
Обозначим
p={k, k+1, k+2, …}
q={…, m-2, m-1, m}
Алгоритм предполагает выделение последовательных операторов Sk, Sk+1, Sm-1, Sm, для которых выполнялось бы условие:
С[p,q]=1.
И
при этом элементы С[p,q]
образуют квадратную матрицу порядка
n’
, где r
n’
n
Если таких матриц несколько, то выбирается та, у которой номера операторов являются наименьшими
Таким образом, операторы Sk, Sk+1 представляют собой вышестоящие операторы (индексы строк), Sm, Sm-1 – нижестоящие (индексы столбцов), а сама процедура определяет порядок просмотра матрицы независимости C ipq и выделения в ней квадратной матрицы. Сама последовательность Sk, Sk+1, Sm-1, Sm определяет независимые нижестоящие операторы от вышестоящих.
Пример:
Матрица (2) не может быть интерпретирована, так как номера операторов в ней больше, чем в (1). Матрица (3) не может быть интерпретирована, так как по ней не может быть сформирована последовательность операторов Sk, Sk+1, Sm-1, Sm, где Sk – вышестоящие операторы программы.
Отнести сформированную последовательность к множеству i‘ (параллельных операторов, выделяемых на i-ом шаге), остальные операторы к множеству ki.
На основе множества i‘ сформировать параллельный групповой оператор, рассмотренный в множестве Ui+1.
Таким образом, на основе анализа множества i‘ может быть осуществлено разворачивание ППФ к ее графу параллельного выполнения.
Пример
разворачивания: Un
= {S7,
}
представлен на рис .4.
Рисунок 4 – Пример разворачивания ППФ(1)
Un-1
= {
}
n-1
=
{
}
Un-2
= {
}
Un-3
= {
}
Un-4
= {
}
n-4 = { S4, S5}
Un-5 = { S1, S2, S3, S4, S5, S6, S7 }
n-4‘ = { S1, S2}
Рисунок 5 - Пример разворачивания ППФ(2)
Прямая процедура предполагает формирование множеств Ui, i’ при разворачивании ППФ множество интерпретируется в обратном порядке шагов.
