Опубликован: 22.12.2006 | Уровень: специалист | Доступ: платный
Лекция 7:

Параллельное программирование — аппарат исследования операций

< Лекция 6 || Лекция 7: 123456 || Лекция 8 >

Решение задачи 1 распараллеливания для однородных ВС

Формулировка задачи: Для данного алгоритма, которому соответствует информационный граф G, и для времени T, отведённого для его выполнения, найти наименьшее число n процессоров, составляющих однородную ВС, и план выполнения работ на них.

Метод точного решения задачи (метод "ветвей и границ") основан на следующей основной теореме.

Теорема. Для того чтобы значение n являлось наименьшим числом процессоров однородной ВС, которая выполняет алгоритм, представленный информационным графом G = (X, P, Г ), за время, не превышающее заданное значение T, необходимо и достаточно, чтобы n было наименьшим числом, для которого можно построить граф G' = (X, P, Г'), объединив вершины, соответствующие работам каждого ПМВНР, который содержит r > n работ r - n ориентированными дугами в n путей не содержащих общих вершин. При этом длина критического пути в графе G' не должна превышать значение T.

Алгоритм 7 решения задачи 1 — нахождения графа-решения G'

  1. Для графа G и времени T находим значения ранних \{ \tau _{1j}\} и поздних \{ \tau _{j}(T)\} ,j = 1 , \dots  , m, сроков окончания выполнения работ. (Если задача поставлена корректно, то

    \begin{align*}
\max \{&\tau_{1j}\}  = T_\text{кр} \le T .)\\
       &j
\end{align*}

  2. Находим оценку минимального числа n процессоров, которое необходимо для выполнения заданного алгоритма за время, не превышающее T.
  3. Пусть \nu — номер шага решения задачи. Полагаем \nu  = 1.

  4. Находим наименьшее значение t_{\nu } такое, что

    F(\tau _{11}, \tau _{12} , \dots  , \tau _{1m}, t_{\nu } )  =  r_{\nu }  > n.

    Если такого t_{\nu } нет, то n — решение задачи.

  5. Выделяем множество работ A_{\nu }  = \{ \alpha _{j\mu }\} , \mu  =1 , \dots  ,r_{\nu }, для которых

    \tau _{1j\mu } - t_{j\mu } \le  t_{\nu } <  \tau _{1\mu },

    т.е. тех работ, которые "порождают" данное значение F. Множество A является подмножеством некоторого ПМВНР.

  6. Предположим, что мы можем упорядочивать комбинации дополнительных связей внутри множества A_{\nu }. Введём очередную комбинацию r - n связей, как указано в теореме — так, чтобы длина критического пути в изменившемся при этом графе G не превысила T.
  7. Если такая комбинация найдена, выполняем операцию \nu  := \nu  +1, уточняем значения \{ \tau _{1j}\} и \{ \tau _{2j}(T)\} с учётом введённых связей, переходим к выполнению 4.
  8. Если такой комбинации связей не существует, либо все они уже испытаны, выполняем операцию \nu  := \nu  - 1.
  9. Если \nu  = 0, т.е. на первом же шаге сглаживание загрузки процессоров не приводит к подтверждению того, что n — решение, выполняем операцию n := n + 1 и переходим к выполнению 3. Если \nu  \ne  0, восстанавливаем значения \{ \tau _{1j}\} и \{ \tau _{2j}(T)\} , найденные на данном шаге, и переходим к выполнению 6.

Конец алгоритма.

Таким образом, суть алгоритма в том, что, реализуя общий подход, который называется метод "ветвей и границ", мы, выбрав начальное расписание, где все работы занимают на оси времени крайнее левое положение, продвигаемся шаг за шагом и находим точки на оси времени, в которых функция плотности загрузки превышает первоначально испытываемое n. Пытаемся сгладить значение этой функции, введя дополнительные связи между работами, допускаемые ограничением T. В случае неудачи вернёмся на шаг назад и попытаемся ввести другую комбинацию связей. При переборе всех комбинаций связей на первом шаге, не приведших к успеху, увеличим предполагаемое число процессоров и начнём процесс сглаживания функции плотности загрузки сначала.

Примечания

  1. Как упорядочить вводимые комбинации связей?

    Пусть A_{\nu } — множество взаимно независимых работ, между которыми нужно ввести r - n связей по условию теоремы, т.е. построить некоторый граф, связывающий вершины A_{\nu }. Построим матрицу следования L_{\nu }, соответствующую этому графу. Первоначально эта матрица — нулевая. Вводим r_{\nu } - n единиц так, чтобы:

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

    Перемещая последнюю единицу сначала по строке, затем по столбцам, затем перейдя к предпоследней единице и т.д., осуществляем перебор всех возможных комбинаций связей между работами множества A_{\nu }.

  2. Можно рекомендовать следующий способ сокращения перебора: введение дополнительных связей в пункте 6 алгоритма производить не только по критерию допустимого увеличения длины критического пути, но и по значениям функции минимальной загрузки отрезка. А именно, вводя очередную комбинацию связей на \nu -м шаге сглаживания функции плотности загрузки, не приводящую к увеличению длины критического пути сверх заданного T, необходимо вновь пересчитать значение функции \phi с учётом новых связей на всех отрезках [\theta _{1}, \theta _{2}] \subseteq  [t_{\nu }, T]. Если для испытываемого значения n на этих отрезках выполняется соотношение (7.2), данная комбинация связей может быть признана удачной. Таким образом, выполнение соотношения (7.2) в совокупности с допустимым увеличением длины критического пути определяет "границы" при ветвлении.

(Напомним, что метод "ветвей и границ", как метод перебора, обладает экспоненциальной сложностью, является NP - трудным. Поэтому сокращение перебора — очень важная задача.)

Пример. Найдём минимальное число n процессоров, необходимое для выполнения алгоритма, который представлен графом G на рисунке 7.21а, за время T = 7.

Последовательные действия при точном решении задачи 1

Рис. 7.21. Последовательные действия при точном решении задачи 1

По алгоритму 4 найдёем нижнюю оценку n = 2, исследовав 28 значений \varphi ^{(7)}(\theta _{1},\theta _{2}) для всех [\theta _{1}, \theta _{2}] \subseteq  [0, 7]. При этом \tau _{11} = 1,  \tau _{12} = \tau _{13} = \tau _{14} = 2,\tau _{15} = \tau _{16} = 4,  \tau _{17} = 5,  \tau _{21}(7) =  \tau _{22}(7) = 4, \tau _{23} (7) =\tau _{24}(7) = \tau _{26} (7) = 6,\tau _{25}(7) = \tau _{27} = 7. Мы не собираемся впредь иллюстрировать нахождение функции минимальной загрузки, поэтому не будем приводить динамически уточняемые значения поздних сроков окончания выполнения работ.

F(\tau _{11} , \dots  , \tau _{17}) = 4 > 2, т.е. t1 = 0. В формировании этого значения участвуют работы 1, 2, 3, 4. Составим квадратную матрицу L1 (рис. 7.21в) с первоначально нулевыми элементами. Постараемся последовательно ввести в неё два единичных элемента. Первая возможная комбинация двух таких элементов соответствует связям 3 -> 2 -> 1. Длина критического пути в графе G, дополненном дугами в соответствии с этими связями, превышает 7. Пробуем заменить вторую связь следующей возможной. Новая испытываемая комбинация связей 4 -> 2 -> 1 также приводит к недопустимому увеличению длины критического пути. Единичные элементы, соответствующие отвергнутым связям, на рисунке зачёркнуты.

Вновь меняем вторую связь, полагая равным единице первый элемент третьей строки матрицы L1. Новая комбинация связей 2 -> 1 -> 3 не приводит к недопустимому увеличению длины критического пути в графе G. По графу, учитывающему введённые связи, находим ранние и поздние сроки окончания выполнения работ. На рис. 7.21г, приведена диаграмма выполнения алгоритма при ранних сроках \{ \tau _{11} = 3,  \tau _{12} =  \tau _{14} = 2\}, \tau _{13} = \tau _{16} = 5,  \tau _{15} = \tau _{17} = 6 окончания выполнения работ. Связи между работами не указаны.

Найдём t2 = 3 такое, что F(3, 2, 5, 2, 6, 5, 6, 3) = 3 > 2. Данное значение функции плотности загрузки определяется выполнением работ 3, 5, 6. Составляем матрицу L2 (рис. 7.21д) и стараемся ввести в ней единственный единичный элемент. Однако перебор всех возможных способов введения такого элемента приводит к длине критического пути в образующемся графе, превышающей 7. Возвращаемся на шаг назад к анализу матрицы L1 и пробуем ввести другую допустимую комбинацию связей. Такой комбинацией является 2 -> 1, 4 -> 3. На рис. 7.21е представлена диаграмма выполнения алгоритма при уточнённых ранних сроках окончания выполнения работ \tau _{11} = 3,  \tau _{12} =  \tau _{14} = 2  \tau _{13} =4, \tau _{15} = \tau _{17} = 6, \tau _{16} =5

Вновь находим значение t2 = 3 такое, что F(3, 2, 4, 2, 6, 5, 6, 3) = 3 > 2. (Совпадение значений t2 и выделенных работ с ранее исследованными является скорее случайным.) Вновь формируем матрицу L2 (индекс указывает номер шага, новая матрица L2 в общем случае ничем не схожа с аналогичной ранее рассмотренной матрицей), и находим первую из допустимых связей — связь 6 -> 3 (рис. 7.21ж).

Вновь (рис. 7.21з) находим значение t3 = 5, где плотность загрузки превышает значение 2. Составляем матрицу L3 (рис. 7.21и). Находим в ней единственную единицу, соответствующую допустимой связи 5 -> 7. На рис. 7.21к представлена диаграмма выполнения алгоритма, удовлетворяющая решению задачи.

Собственно расписание определяется найденными на последнем шаге значениями \{ \tau _{1j}\} .

< Лекция 6 || Лекция 7: 123456 || Лекция 8 >
Mardon Madrahimov
Mardon Madrahimov
Узбекистан, nukus, qmu, 2013
Mardon Madraximov
Mardon Madraximov
Узбекистан, ellikqala