Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
shpora_ROD_pechat.doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
5.2 Mб
Скачать

Билет №15

1. Граф предшествования и граф распараллеленности операций

Граф предшествования операции H. Вершины графа – операции различного типа(на что указывает значение числа).

Граф распараллеленности операции. Этот граф построен по графу непосредственного предшествования операций, рассмотренному ранее. Вершинами графа (их всего восемь) являются операции из множества N. Две вершины i, k соединены (не соединены) ребром, если соответствующие операции выполняются параллельно (последовательно) на графе предшествования операций.

2. Фабрика класса

Фабрика класса — это компонент, единственной задачей которого является создание других компонентов. Экспортирование компонента и управление подключением библиотеки выполняется посредством функций DllGetClassObject и DllCanUnloadNow. Соответствующий .def файл, используемый для создания динамической библиотеки компонента имеет вид:

LIBRARY MyServer.dll

EXPORTS

DllGetClassObject @1 PRIVATE

DllCanUnloadNow @2 PRIVATE

Определение функций DllGetClassObject и DllCanUnloadNow выполняется в процессе написания кода компонента и соответствующей фабрики класса.

Функция CoCreateInstance не создает компоненты непосредственно. Вместо этого она создает компонент, называемый фабрикой класса (class factory), который затем и порождает нужный компонент. Точнее, конкретная фабрика класса создает компоненты, соответствующие одному конкретному CLSID. Клиент использует поддерживаемые фабрикой класса интерфейсы для управления тем, как фабрика создает каждый компонент. Стандартный интерфейс создания компонентов — IClassFactory. Функция CoCreateInstance создает компоненты также при помощи интерфейса IClassFactory.

Задача - Привести пример последовательно-параллельного плана

Пусть N={1,…,n} – множество операций. Определим последовательно-параллельный план выполнения операций из множества N рекурсивно, используя суперпозицию двух функций seq и par. Последовательно-параллельный план есть:

  1. отдельная операция iN;

  2. функция seq(S1,…,Sk) последовательного выполнения частичных планов S1,…,Sk;

  3. функция par(S1,…,Sk) параллельного выполнения

  4. частичных планов S1,…,Sk.

Графическое изображение функции seq представлено на рис.1, графическое изображение функции par представлено на рис.2.

Граф распараллеленности операций. Пример графа распараллеленности операций приведен на рис.1. Этот граф построен по графу непосредственного предшествования операций, рассмотренному ранее. Вершинами графа (их всего восемь) являются операции из множества N. Две вершины i, k соединены (не соединены) ребром, если соответствующие операции выполняются параллельно (последовательно) на графе предшествования операций. Две операции выполняются последовательно, если существует маршрут на графе предшествования, соединяющий одну вершину с другой, и выполняются параллельно, если маршрута не существует. Каждая i-я вершина графа метится двумя метками. Первая метка Ti является числовой и описывает время выполнения операции. Вторая метка является вектором bi=(bi1,…,bim), длина которого равна количеству m типов процессоров. Компонентом bij вектора является число процессоров типа j, необходимое для выполнения операции i. Например, вершина 1 метится вектором (1,0), следовательно, для операции 1 необходим один процессор первого типа и не требуется процессор второго типа.

Граф распараллеленности операций является исходными данными для синтеза последовательно-параллельного плана методом свертывания. Свертывание графа выполняется посредством пошагового склеивания вершин-операций, при этом в графе появляются более сложные вершины, которым соответствуют частичные (последовательные или параллельные) планы и которые также метятся двумя величинами:

  1. временем Ti реализации частичного плана;

  2. вектором bi чисел процессоров различных типов, необходимых для реализации частичного плана.

Рассмотрим последовательно-параллельное планирование с целью минимизации времени решения задачи при заданных ограничениях на ресурсы. Ограничения на ресурсы представим вектором bmax=(b1max,…,bmmax) максимального числа используемых процессоров каждого типа.

Склеивание вершин x и y образует новую вершину xy. Граф преобразуется путем удаления вершин x и y, удаления множества ребер, инцидентных этим вершинам, а также путем добавления вершины xy, добавления ребер, инцидентных этим вершинам и вершинам из множества xy, где (x) – множество вершин, смежных с вершиной x в исходном графе. Если вершины x и y соединены ребром, они склеиваются параллельно, если не соединены - склеиваются последовательно. Параллельное склеивание вершин не должно приводить к нарушению ограничений на число процессоров, описываемых вектором bmax. Если нарушение ограничений возможно, ребро заранее удаляется из графа. Время выполнения Txy и вектор bxy вершины xy определяется как

1) Txy=max(Tx,Ty) и bxy=bx+by, если вершины склеиваются параллельно,

2) Txy=Tx + Ty и bxy=max(bx,by), если вершины склеиваются последовательно.

Различный порядок склеивания пар вершин приводит к построению различных в общем случае последовательно-параллельных планов. Существенное влияние на эффективность свертывания графа оказывает потеря ребер в результате склеивания вершин. Потеря ребра происходит тогда, когда существует вершина z, соединенная ребром скажем с вершиной x и не соединенная с вершиной y. В результате склеивания вершины xy и z не соединены ребром. Это означает потерю потенциального параллелизма между вершинами y и z, что может сказаться отрицательно на минимизации времени решения задачи. В силу сказанного, в первую очередь необходимо выбирать вершины, склеивание которых приводит к минимальной потере ребер.

При каждом склеивании в представление последовательно-параллельного плана добавляется либо функция seq либо функция par.

Синтезируем последовательно-параллельный план, минимизирующий время решения задачи на двух процессорах первого типа и двух процессорах второго типа путем свертывания графа распараллеленности операций, изображенного на рис.3. Процесс склеивания вершин графа представлен на рис.4. Помеченные на рис.4с перечеркивающими линиями ребра соединяют частичные планы, которые не могут быть склеены параллельно из-за возможного нарушения ограничений на число процессоров. Эти ребра удаляются из графа.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]