
- •Федеральное агентство по образованию
- •Донской государственный технический университет
- •Общие сведения
- •Постановка задачи
- •Алгоритмы списочных расписаний
- •1Алгоритм критического пути
- •2Алгоритм половинного деления множества заданий
- •3Упорядоченное разбиение множества заданий
- •3.4 Вычислительные эксперименты
- •Варианты заданий
- •Литература
2Алгоритм половинного деления множества заданий
Приведённый далее алгоритм является одной из модификаций алгоритма критического пути (CMP), но, алгоритм половинного деления состоит из двух уровней, и актуален только для чётного числа процессоров.
Решим задачу №1 с помощью алгоритма
половинного деления множества заданий.
Как и в CMP, в алгоритме половинного
деления (Half Division Multitude Tasks или HDMT) имеющуюся
однородную матрицу упорядочить по
убыванию, в результате, множество заданий
будет иметь вид: T = [22 14 9
7 7 5 5 5]. Далее, как и в алгоритме CMP,
распределяем всё множество заданий,
но, только, на два процессора -
и
(В этом заключается первый уровень):
На втором уровне задания с процессоров
и
разбрасываются на две группы процессоров
(по N/2 процессоров в
каждой):
,
и
,
соответственно.
Процесс решения:
|
I уровень: |
22 7 5 5
|
14 9 7 5
|
|
|
|
||
---|---|---|---|---|---|---|---|---|
|
|
|||||||
II ур: |
22
|
7 5 5
|
|
14 5 |
9 7 |
|||
|
||||||||
|
||||||||
|
||||||||
|
||||||||
Нагр: |
22 |
17 |
|
39 |
35 |
|
19 |
16 |
3Упорядоченное разбиение множества заданий
Данный алгоритм (Ordered Fragmentation Multitude Tasks или OFMT) очень схож с HDMT. Но, если в HDMT число процессоров должно быть чётным, то в OFMT число процессоров равно числу 2 в какой-либо степени, т.е. N = 2p. OFMT, как и HDMT, является многоуровневым. Но, в нём не два уровня, а равно числу p (т.е., если 8 процессоров, число уровней - 3). Рассмотрим работу на примере задачи №2.
И
значально,
на первом уровне, необходимо упорядочить
однородную матрицу по убыванию, в итоге
получим вектор заданий: T = [22 18 18 18
16 11 10 8 7 2]. После чего, распределяем по
алгоритму CMP множество
заданий T на два
процессора:
и
,
В результате получим два множества
заданий:
и
.
На втором уровне, каждое из заданий
распределяется ещё по двум машинам:
на
и
,
на
и
.
Это даст ещё 4 множества заданий:
,
,
,
.
Наконец, на третьем уровне, распределяем
полученные 4 множества на 8 процессоров.
Получим:
|
I уровень: |
22 18 11 10 7 |
18 18 16 8 2 |
|
|
|
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
||||||||||||||||
II ур: |
10
|
11 7
|
|
16
|
8 2 |
||||||||||||
|
|||||||||||||||||
|
|||||||||||||||||
|
|||||||||||||||||
|
|||||||||||||||||
Нагр: |
24 |
24 |
|
48 |
47 |
|
24 |
23 |
|||||||||
|
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|||||||||
III ур: |
|
|
|
|
|
|
|
|
|
|
|
||||||
|
22 |
10 |
|
18 |
11 |
|
18 |
16 |
|
18 |
8 |
||||||
|
|
|
|
|
7 |
|
|
|
|
|
2 |
||||||
Нагр: |
22 |
10 |
18 |
18 |
18 |
16 |
18 |
10 |
Max(22, 10, 18, 18, 18, 16, 18, 10) = 22