Вы находитесь на странице: 1из 10

ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ

ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО


ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ

ДОНСКОЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ


Кафедра “Программное обеспечение вычислительной техники и
автоматизированных систем”

Методические указания
и контрольные задания к практическим, лабораторным занятиям, курсовому
проектированию по теме «Теория расписаний», для дисциплин «Алгоритмические
языки и программирование», «Вычислительная техника и программирование»

Ростов-на-Дону
2006
1. Введение
Задачи проектирования и управления в системах, для которых необходимо
распределение работы между параллельно работающими разнородными
вычислительными устройствами занимают значимое место в теории построения
расписаний. Практическая актуальность таких задач определяется существенными
возможностями экономии машинного времени и вытекающими функциональными
и эксплуатационными преимуществами.
Теоретическая сложность нахождения наилучшего распределения связана с
необходимостью решения экстремальных задач комбинаторного типа, требующих
больших вычислительных ресурсов, так что эффект от нахождения близкого к
оптимальному, с точки зрения времени выполнения, распределения может быть
сведен на нет затратами на его получение.
В настоящем руководстве приводятся методы получения расписаний,
приводящие к небольшим затратам на вычисление за счет отказа от получения
оптимального решения, но в тоже время позволяющие найти приемлемое
решение, близкое к оптимальному.

2. Постановка задачи
Имеется M независимых работ T  {t1 , t 2 ,..., t m } , которые необходимо
распределить на N параллельно работающих разнородных устройств

P  { p1 , p 2 ,..., p n } по критерию f r  max


l  j n
f j  min , где fj   (t ) - время завершения
ti T j
i

работы процессора pj . Каждое устройство pj выполняет только одну работу в


определенный момент времени и выполнение задания не прерывается для
передачи на другой процессор. Известно (вес) время выполнения  (ti , p j ) задания
ti на любом из устройств pj . Требуется найти такое R распределение заданий по
процессорам, при котором суммарное время выполнения заданий на каждом из
процессоров было бы минимальным.
Получение оптимального распределения в такой постановке приводит к
громоздким вычислениям, требующим значительного времени машинного счета,
поэтому цель – продемонстрировать алгоритмы, с помощью которого можно
находить с малыми затратами достаточно приемлемое решение.
Задача №1
Значения  (ti , p j ) задаются матрицей размером N  M , при N  M , где i-номер
алгоритма, j-номер процессора. Рассмотрим задачу N  3, M  3. Исходная
матрица времени выполнения работ
15 6 9
T  8 11 7 .
12 14 11

Задача №2
Значения  (ti , p j ) задаются матрицей размером N  M , где i-номер алгоритма,
j-номер процессора. N  M , где N  3 , M  5 . Исходная матрица времени
выполнения работ
17 14 12
9 5 11
T  15 7 12 .
13 10 8
11 16 14

Задача №3
Матрица размером N  M , при N  M . Рассмотрим задачу N  8, M  8.
Исходная матрица времени выполнения работ
9 5 7 6 1 6 8 7
8 10 3 9 3 4 10 7
6 5 4 1 3 7 8 7
5 7 6 10 6 7 3 1
10 .
T 
5 1 3 4 7 9 2
7 8 3 5 6 9 4 8
8 5 6 7 5 4 3 10
6 3 4 4 8 6 5 2
3. Алгоритмы распределения работ на параллельно работающие
устройства

3.1 Распределение независимых работ (Бондаренко А.Т., Сапатый П.С.)


n

Ш.1 Определяются элементы множества {i } и { j } , где  i   (t i p j ) и


j 1

m
 j   (t i p j ) .
i 1

Ш.2 Формируется последовательность I, для которого выполняется


неравенство i   i  ...  i
1 2 m и последовательность J, для которого справедливо
 j1   j2  ...   jm ,

Ш.3 Получаем предварительное распределение работ по устройствам путем


постановки в соответствие элементов I и J.
Ш.4 Упорядочиваем последовательности I и J для выполнения неравенства
 (ti p j )   (ti p j )  ...   (ti p j )
1 1 2 2 m m

Ш.5 В последовательности элементов jm  j m1  ...  j2 , входящей в J, ищем


первый элемент (k-й по порядку в J), для которого  (t i p j )   (ti p j ) и
1 k 1 1

 (t i p j )   (t i p j ) . Если таких элементов нет, переход к Ш.7, в противном случае


k 1 1 1

переход к следующему шагу.


Ш.6 Выполняем транспозицию элементов j1 и jk в J. Восстанавливаем
упорядоченность последовательностей I и J для выполнения условий Ш.5.
Ш.7 Конец работы алгоритма. Решением считаются все соответствующие пары
из I и J.
Рассмотрим более подробно работу алгоритма на примере, решив задачу №1.
Предварительное распределение на Ш.1-Ш.4 предполагает распределение на
более быстродействующие процессоры более длительных работ. Быстродействие
процессора определяется временем выполнения на нем заданного набора работ, а
длительность выполнения конкретной работы оценивается по суммарному
времени выполнения ее последовательно на всех устройствах.
Для построения расписания выполним алгоритм.
Ш.1 Определим множества элементов { i } и { j } , как сумма по строкам и
сумма по столбцам.
15 6 9 | 30
8 11 7 | 26
T  12 14 11 | 37
  
35 31 27

{1 ,  2 ,  3 }  {30,26,37}

{ 1 , 2 , 3 }  {35,31,27}

Упорядочив множества, получим последовательность I и J


I=(3,1,2); J=(1,2,3); Переставляем элементы I,J так, чтобы выполнялось условие
в Ш.4.
 (t3 p1 )   (t1 p2 )   (t 2 p3 )

12  6  7 , для того чтобы выполнялось условие Ш.4, сделаем


перестановку попарно i,j
I=(3,2,1); J=(1,3,2);
Тогда 12  7  6 - условие выполняется .
Выполним Ш.5 к=1..J , при к=2
 (t3 p3 )   (t 3 p1 ) и  (t 2 p1 )   (t3 p1 ) т.е., 11  12 и 8  12

меняем местами 2 и 1 элементы в J, J=(3,1,2); с учетом того чтобы выполнялось


условие Ш.4  (t3 p3 )   (t 2 p1 )   (t1 p2 )
Ставя в соответствие элементы множеств I и J, получаем следующее решение
max( f1 ( p1 ), f 2 ( p 2 ), f 3 ( p3 ))  max(11,8,6) =11

3.2 Алгоритм построения расписания при N=M


Число процессоров равно числу заданий и на каждом процессоре должно
выполниться только одно задание. Использование приближенного метода в
данном случае представляется наиболее целесообразным для сокращения времени
решения. Метод основывается на учете специфического свойства матрицы. Это
свойство определяет стратегию распределения согласно следующей теореме.
Терема 1: Если в каждой i-й строке матрицы, приращения

s s

ci   (ti p j 1)  (ti p j )  const , для всех j от 1 до N-1 и строки матрицы

расположены так, что c1  c2  ...  cm , то приемлемое (оптимальное) распределения


будет составлено из элементов главной диагонали. ([3] – доказательство теоремы).
Ш.1 Для каждой строки матрицы весов определяется приращения

s s

 (ti p j 1)  (ti p j ) и строки переставляются по порядку убывания

приращения.
Ш.2 Преобразованная матрица разбивается на 4 квадратных подматрицы
N M N 1 M 1 N 1 M 1
размером  для четных N и размером  и  для
2 2 2 2 2 2

нечетных N.
Ш.3 С двумя матрицами, главные диагонали которых совпадают с главной
диагональю исходной матрицы, выполняют Ш.1. Процесс последовательной
декомпозиции подматриц заканчивается при размерах 2  2 или 3  3 .

3.2.1 Выбор показателя s для критерия


lg 2
Показатель s подбирается из условия s
lg(max  (t i p j )  lg a ) , при использовании

критерия минимакса в качестве a берется ближайшее к max  (t i p j ) значение.


Рассмотрим более подробно работу алгоритма на примере, решив задачу №3.
Матрица 8  8
1 | 9 5 7 6 1 6 8 7 |  32
2 | 8 10 3 9 3 4 10 7 |  15
3 | 6 5 4 1 3 7 8 7 |  13
4 | 5 7 6 10 6 7 3 1 |  24
5 | 5 1 3 4 7 9 2 10 |  75
(1)
6 | 7 8 3 5 6 9 4 8 |  15
7 | 8 5 6 7 5 4 3 10 |  36
8 | 6 3 4 4 8 6 5 2 |  32
Слева от матрицы (1) проставлены номера строк, справа значения

2 2
приращения ci   (ti p8 )  (ti p1) . Параметр s=2 т.к. max  (t p ) =10 , и a=9 . i j

Расположим строки по убыванию приращений и разобьем полученную матрицу на


4 подматрицы 4  4 .

5 | 5 1 3 4 | 9
7 | 8 5 6 7 |  15
6 | 7 8 3 5 |  24
3 | 6 5 4 1 |  35
2 | 3 4 10 7 |  40
(2)
4 | 6 7 3 1 |  35
1 | 1 6 8 7 |  48
8 | 8 6 5 2 |  60

Для левой верхней подматрицы вычислим приращение по формуле

2 2
ci   (t p4 )  (ti p1) ,где (i=5,7,6,3); для правой нижней – по формуле
i

2 2
ci   (t   (t
i p8 ) i p5 )
,где (i=2,4,1,8). Полученные приращения указаны

справа от матрицы (2).


В каждой из подматриц матрицы (2) упорядочим строки по убыванию
приращений и разобьем каждую из подматриц на 4 подматрицы размером 2  2 .
5 | 5 1 |  24
7 | 8 5 |  39
6 | 3 5 |  16
3 | 4 1 |  15
2 | 1 6 |  35
4 | 3 4 | 7
1 | 3 1 | 8
8 | 5 2 |  21

Для всех подматриц приращение расположены в порядке убывания,


следовательно, полученное распределение соответствует элементам главной
диагонали.
Результат: max( f1 ( p1 ), f 2 ( p 2 ),..., f 8 ( p8 ))  max(5,5,3,1,1,4,3,2) =5
3.3 Алгоритм построения расписания с произвольной загрузкой
Описанный ниже метод более эффективен по скорости поиска приемлемого по
точности решения.
Дана прямоугольная матрица N  M .
Ш.1 Упорядочим строки матрицы T по убыванию сумм всех их элементов.
Ш.2 В преобразованной матрице T’ первой строке и найдем в ней
минимальный элемент. Примем этот элемент за элемент распределения и
прибавим его к соответствующему элементу следующей строки.
Ш.3 Следующая строка теперь учитывает предыдущее решение. Выберем из
нее минимальный элемент, прибавим его к соответствующему элементу третьей
строки и т.д.
Решим задачу №2 рассматриваемым алгоритмом: выполнив Ш.1 множество
заданий примет вид:
Сложили элементы в строках матрицы.
p1 p2 p3

1 17 14 12 43
T 2 9 5 11 25
3 15 7 12  34
4 13 10 8 31
5 11 16 14 41

Упорядочиваем строки в порядке убывания по суммам, матрица примет вид:


p1 p2 p3

1 17 14 12 43
T 2 11 16 14 41
3 15 7 12  34
4 13 10 8 31
5 9 5 11 25

Согласно Ш.2 строим расписание (справа вверху над элементом указывается


суммарная загрузка процессора в столбце):
p1 p2 p3

0 0 1212
T  0 0 0
0 0 0
0 0 0
0 0 0

p1 p2 p3

0 0 1212
T  1111 0 12
0 0 0
0 0 0
0 0 0

Выполнив алгоритм, получим расписание:


p1 p2 p3
p1 p2 p3

0 0 1212
11 7 12
T  1111 0 12
9 10
11 77 12
  
11 1017 12 20 17 12
920 0 12

Результат: max( f 1 ( p1 ), f 2 ( p 2 ), f 3 ( p3 ))  max(20,17,12) =20

4. Варианты заданий
Задание определяется согласно № - номера студента в списке, по приведенным
ниже таблицам (Таблица 1, Таблица 2). Алг. - номер алгоритма в данном
руководстве, который необходимо запрограммировать. Параметр n-определяет
число устройств. m – количество работ, выбирается одно значение из указанного
отрезка в таблице 2, T – множество весов работ, случайным образом берется m
работ в пределах указанных в таблице 2.
Например, если студент в списке под номером №8, то Алг. = “ Алгоритм 3.2”, n =
8, m для указанного алгоритма равно n, T формируется из m работ, вес которых
выбирается случайным образом в отрезке [1,25], в результате T – матрица
размером N M , где каждый элемент определяет время выполнения задачи на
конкретном устройстве, т.к. устройства разнородные.
Таблица 1
№ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
Алг. Алгоритм 3.1 Алгоритм 3.2 Алгоритм 3.3
n 3 4 5 8 9 10 4 5 6
m, T 1 2 1 2 1 2 8 1 9 2 10 1 1 2 1 2 1 2

Таблица 2
1 6-15 1-25
m, T
2 8-14 3-30

5. Литература
1. Поспелов Д.А. “Введение в теорию вычислительных машин” – M.:
“Советское радио”, 1972
2. Пашкеев С.Д. “Основы мультипрограммирования для специализированных
вычислительных машин” – M.: “Советское радио”, 1964
3. Плотников В.Н., Зверев В.Ю. “Техническая кибернетика №3” M., 1974
4. Бондаренко А.Т., Сапатый П.С. “Техническая кибернетика №4” –Киев, 1975