Академический Документы
Профессиональный Документы
Культура Документы
Лабораторная работа №2
по учебной дисциплине «Методы параллельной обработки»
Вариант 5
Москва, 2023 г.
Цель работы: исследование хода вычислительного процесса для различных видов
архитектур многопроцессорных вычислительных систем
ВАРИАНТ ЗАДАНИЯ
( x 4 + y 4 ) (x 2+ y 2) y 4 ( xy + y 2 )
f (x , y , z)= +
xy + y
2
( x 2 + z 2) (x2 + y 2 )
План выполнения работы
1) Провести тестирование знаний с помощью соответствующей подпрограммы
лабораторного комплекса.
2
Теоретическая часть
Диаметр – показатель, определяемый как максимальное расстояние между двумя
узлами системы (под расстоянием обычно понимается величина кратчайшего пути между
узлами системы). Эта величина может характеризовать максимально необходимое время
для передачи данных между узлами, поскольку время передачи обычно прямо
пропорционально длине пути;
3
по сравнению с наилучшим последовательным алгоритмом к числу процессоров в
системе.
Ярусно-параллельная структурированная схема — это граф, вершинам которого
соответствуют блоки вычислений, а дугам – пересылки данных. Считается, что исходные
данные для выполнения первого яруса вычислений уже загружены в процессоры.
4
Ход выполнения работы
Исходные данные
Заданная функция:
4 2 2 4 2
( x ¿ ¿ 4+ y )( x + y ) y (xy + y )
f ( x ; y ; z )= 2
+ 2 2 2 2 ¿
xy + y (x + z )(x + y )
Выполнение
5
Таблица 1- Структурная таблица алгоритма вычисления функции
Зависимость
Количество блоков Номер блока Количество
№ яруса от других
вычислений вычислений передач данных
блоков
1 4 0-3 - -
4 2 0, 1
5 1 1
2 5 6 2 1, 2
7 1 2
8 2 2, 3
9 2 4, 6
10 2 5, 7
3 4
11 2 7, 8
12 2 6, 8
13 2 9, 11
4 2
14 2 10, 12
5 1 15 2 13, 14
2 18 1.72 0.86
3 18 1.72 0.57
4 17 1.82 0.46
5 19 1.63 0.33
6 22 1.41 0.24
2 19 1.63 0.82
3 20 1.55 0.52
4 20 1.55 0.39
5 21 1.48 0.30
6 24 1.29 0.22
Листинг 1.
Распределение блоков по процессорам:
0->0
1->1
2->2
3->3
4->0
5->1
6->2
7->3
8->0
9->1
10->2
11->3
12->0
13->1
14->2
15->3
Алгоритм:
Блок 0 (получает , передает 4 ) Блок 1 (получает , передает 6 5 4 ) Блок 2 (получает , передает 8 7 6 ) Блок 3 (получает , передает
8)
Блок 4 (получает 1 0 , передает 9 ) Блок 5 (получает 1 , передает 10 ) Блок 6 (получает 2 1 , передает 9 12 ) Блок 7 (получает 2 ,
передает 10 11 ) Блок 8 (получает 2 3 , передает 12 11 )
Блок 9 (получает 6 4 , передает 13 ) Блок 10 (получает 5 7 , передает 14 ) Блок 11 (получает 7 8 , передает 13 ) Блок 12 (получает
6 8 , передает 14 )
Блок 13 (получает 9 11 , передает 15 ) Блок 14 (получает 10 12 , передает 15 )
Блок 15 (получает 13 14 , передает )
Такт системы 1:
Процессор 0: Очередь блоков ([ Блок True, вход выход , Блок False, вход 1 выход 1 , Блок False, вход 2 3 выход 3 , Блок
False, вход 2 выход 2 , ]), Входной буфер сообщений ([ ]), Выходная очередь сообщений ([ ])
7
Процессор 1: Очередь блоков ([ Блок True, вход выход 2 0 , Блок False, вход выход 2 , Блок False, вход 2 0 выход , Блок
False, вход 3 выход 3 , ]), Входной буфер сообщений ([ ]), Выходная очередь сообщений ([ ])
Процессор 2: Очередь блоков ([ Блок True, вход выход 0 3 , Блок False, вход 1 выход 1 0 , Блок False, вход 1 3 выход , Блок
False, вход 0 выход 3 , ]), Входной буфер сообщений ([ ]), Выходная очередь сообщений ([ ])
Процессор 3: Очередь блоков ([ Блок True, вход выход 0 , Блок False, вход 2 выход 2 , Блок False, вход 0 выход 1 , Блок
False, вход 1 2 выход , ]), Входной буфер сообщений ([ ]), Выходная очередь сообщений ([ ])
Очередь сообщений:
Такт системы 2:
Процессор 0: Очередь блоков ([ Блок False, вход 1 выход 1 , Блок False, вход 2 3 выход 3 , Блок False, вход 2 выход 2 , ]),
Входной буфер сообщений ([ ]), Выходная очередь сообщений ([ ])
Процессор 1: Очередь блоков ([ Блок False, вход выход 2 , Блок False, вход 2 0 выход , Блок False, вход 3 выход 3 , ]),
Входной буфер сообщений ([ ]), Выходная очередь сообщений ([ Сообщение 1->0 время 0, ])
Процессор 2: Очередь блоков ([ Блок False, вход 1 выход 1 0 , Блок False, вход 1 3 выход , Блок False, вход 0 выход 3 , ]),
Входной буфер сообщений ([ Сообщение 1->2 время 1, ]), Выходная очередь сообщений ([ Сообщение 2->3 время 0, ])
Процессор 3: Очередь блоков ([ Блок False, вход 2 выход 2 , Блок False, вход 0 выход 1 , Блок False, вход 1 2 выход , ]),
Входной буфер сообщений ([ ]), Выходная очередь сообщений ([ ])
Очередь сообщений:
Такт системы 3:
Процессор 0: Очередь блоков ([ Блок False, вход 1 выход 1 , Блок False, вход 2 3 выход 3 , Блок False, вход 2 выход 2 , ]),
Входной буфер сообщений ([ Сообщение 2->0 время 1, ]), Выходная очередь сообщений ([ ])
Процессор 1: Очередь блоков ([ Блок True, вход выход 2 , Блок False, вход 2 0 выход , Блок False, вход 3 выход 3 , ]),
Входной буфер сообщений ([ ]), Выходная очередь сообщений ([ Сообщение 1->0 время 0, ])
Процессор 2: Очередь блоков ([ Блок True, вход 1 выход 1 0 , Блок False, вход 1 3 выход , Блок False, вход 0 выход 3 , ]),
Входной буфер сообщений ([ ]), Выходная очередь сообщений ([ Сообщение 2->3 время 0, ])
Процессор 3: Очередь блоков ([ Блок False, вход 2 выход 2 , Блок False, вход 0 выход 1 , Блок False, вход 1 2 выход , ]),
Входной буфер сообщений ([ ]), Выходная очередь сообщений ([ ])
Очередь сообщений:
Такт системы 4:
Процессор 0: Очередь блоков ([ Блок False, вход 1 выход 1 , Блок False, вход 2 3 выход 3 , Блок False, вход 2 выход 2 , ]),
Входной буфер сообщений ([ Сообщение 2->0 время 1, Сообщение 3->0 время 1, ]), Выходная очередь сообщений ([ ])
Процессор 1: Очередь блоков ([ Блок False, вход 2 0 выход , Блок False, вход 3 выход 3 , ]), Входной буфер сообщений ([ ]),
Выходная очередь сообщений ([ Сообщение 1->2 время 0, ])
Процессор 2: Очередь блоков ([ Блок False, вход 1 3 выход , Блок False, вход 0 выход 3 , ]), Входной буфер сообщений ([ ]),
Выходная очередь сообщений ([ Сообщение 2->1 время 0, Сообщение 2->0 время 0, ])
Процессор 3: Очередь блоков ([ Блок False, вход 2 выход 2 , Блок False, вход 0 выход 1 , Блок False, вход 1 2 выход , ]),
Входной буфер сообщений ([ ]), Выходная очередь сообщений ([ ])
Очередь сообщений:
Такт системы 5:
Процессор 0: Очередь блоков ([ Блок False, вход 1 выход 1 , Блок False, вход 2 3 выход 3 , Блок False, вход 2 выход 2 , ]),
Входной буфер сообщений ([ Сообщение 2->0 время 1, Сообщение 3->0 время 1, Сообщение 1->0 время 1, ]), Выходная очередь
сообщений ([ ])
Процессор 1: Очередь блоков ([ Блок False, вход 2 0 выход , Блок False, вход 3 выход 3 , ]), Входной буфер сообщений ([ ]),
Выходная очередь сообщений ([ ])
Процессор 2: Очередь блоков ([ Блок False, вход 1 3 выход , Блок False, вход 0 выход 3 , ]), Входной буфер сообщений ([ ]),
Выходная очередь сообщений ([ Сообщение 2->0 время 0, ])
Процессор 3: Очередь блоков ([ Блок False, вход 2 выход 2 , Блок False, вход 0 выход 1 , Блок False, вход 1 2 выход , ]),
Входной буфер сообщений ([ ]), Выходная очередь сообщений ([ ])
Очередь сообщений:
Такт системы 6:
Процессор 0: Очередь блоков ([ Блок True, вход 1 выход 1 , Блок False, вход 2 3 выход 3 , Блок False, вход 2 выход 2 , ]),
Входной буфер сообщений ([ Сообщение 2->0 время 1, Сообщение 3->0 время 1, ]), Выходная очередь сообщений ([ ])
Процессор 1: Очередь блоков ([ Блок False, вход 2 0 выход , Блок False, вход 3 выход 3 , ]), Входной буфер сообщений ([ ]),
Выходная очередь сообщений ([ ])
Процессор 2: Очередь блоков ([ Блок False, вход 1 3 выход , Блок False, вход 0 выход 3 , ]), Входной буфер сообщений ([ ]),
Выходная очередь сообщений ([ ])
Процессор 3: Очередь блоков ([ Блок False, вход 2 выход 2 , Блок False, вход 0 выход 1 , Блок False, вход 1 2 выход , ]),
Входной буфер сообщений ([ Сообщение 2->3 время 1, ]), Выходная очередь сообщений ([ ])
Очередь сообщений:
Такт системы 7:
Процессор 0: Очередь блоков ([ Блок False, вход 2 3 выход 3 , Блок False, вход 2 выход 2 , ]), Входной буфер сообщений
([ Сообщение 2->0 время 1, Сообщение 3->0 время 1, ]), Выходная очередь сообщений ([ ])
Процессор 1: Очередь блоков ([ Блок False, вход 2 0 выход , Блок False, вход 3 выход 3 , ]), Входной буфер сообщений ([ ]),
Выходная очередь сообщений ([ ])
Процессор 2: Очередь блоков ([ Блок False, вход 1 3 выход , Блок False, вход 0 выход 3 , ]), Входной буфер сообщений
([ Сообщение 1->2 время 1, ]), Выходная очередь сообщений ([ ])
Процессор 3: Очередь блоков ([ Блок True, вход 2 выход 2 , Блок False, вход 0 выход 1 , Блок False, вход 1 2 выход , ]),
Входной буфер сообщений ([ ]), Выходная очередь сообщений ([ ])
Очередь сообщений:
8
Такт системы 8:
Процессор 0: Очередь блоков ([ Блок True, вход 2 3 выход 3 , Блок False, вход 2 выход 2 , ]), Входной буфер сообщений
([ ]), Выходная очередь сообщений ([ ])
Процессор 1: Очередь блоков ([ Блок False, вход 2 0 выход , Блок False, вход 3 выход 3 , ]), Входной буфер сообщений
([ Сообщение 2->1 время 1, ]), Выходная очередь сообщений ([ ])
Процессор 2: Очередь блоков ([ Блок False, вход 1 3 выход , Блок False, вход 0 выход 3 , ]), Входной буфер сообщений
([ Сообщение 1->2 время 1, ]), Выходная очередь сообщений ([ ])
Процессор 3: Очередь блоков ([ Блок False, вход 0 выход 1 , Блок False, вход 1 2 выход , ]), Входной буфер сообщений ([ ]),
Выходная очередь сообщений ([ ])
Очередь сообщений:
Такт системы 9:
Процессор 0: Очередь блоков ([ Блок False, вход 2 выход 2 , ]), Входной буфер сообщений ([ Сообщение 2->0 время 1, ]),
Выходная очередь сообщений ([ ])
Процессор 1: Очередь блоков ([ Блок False, вход 2 0 выход , Блок False, вход 3 выход 3 , ]), Входной буфер сообщений
([ Сообщение 2->1 время 1, ]), Выходная очередь сообщений ([ ])
Процессор 2: Очередь блоков ([ Блок False, вход 1 3 выход , Блок False, вход 0 выход 3 , ]), Входной буфер сообщений
([ Сообщение 1->2 время 1, ]), Выходная очередь сообщений ([ ])
Процессор 3: Очередь блоков ([ Блок False, вход 0 выход 1 , Блок False, вход 1 2 выход , ]), Входной буфер сообщений ([ ]),
Выходная очередь сообщений ([ ])
Очередь сообщений:
9
Такт системы 15:
Процессор 0: Очередь блоков ([ ]), Входной буфер сообщений ([ ]), Выходная очередь сообщений ([ ])
Процессор 1: Очередь блоков ([ Блок True, вход 3 выход 3 , ]), Входной буфер сообщений ([ ]), Выходная очередь сообщений
([ ])
Процессор 2: Очередь блоков ([ ]), Входной буфер сообщений ([ ]), Выходная очередь сообщений ([ ])
Процессор 3: Очередь блоков ([ Блок False, вход 1 2 выход , ]), Входной буфер сообщений ([ Сообщение 2->3 время 1, ]),
Выходная очередь сообщений ([ ])
Очередь сообщений:
Процессор 0 1 2 3
Блоки 0 4 8 12 1 5 9 13 2 6 10 14 3 7 11 15
10
Номер в 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4
очереди
2. Алгоритм
3. Такты
Листинг 2.
Такт системы 1:
Процессор 0: Очередь блоков ([ Блок True, вход выход , Блок False, вход 1 выход 1 , Блок False, вход 2 3 выход 3 ,
Блок False, вход 2 выход 2 , ]), Входной буфер сообщений ([ ]), Выходная очередь сообщений ([ ])
Процессор 1: Очередь блоков ([ Блок True, вход выход 2 0 , Блок False, вход выход 2 , Блок False, вход 2 0 выход ,
Блок False, вход 3 выход 3 , ]), Входной буфер сообщений ([ ]), Выходная очередь сообщений ([ ])
Процессор 2: Очередь блоков ([ Блок True, вход выход 0 3 , Блок False, вход 1 выход 1 0 , Блок False, вход 1 3
выход , Блок False, вход 0 выход 3 , ]), Входной буфер сообщений ([ ]), Выходная очередь сообщений ([ ])
Процессор 3: Очередь блоков ([ Блок True, вход выход 0 , Блок False, вход 2 выход 2 , Блок False, вход 0 выход 1 ,
Блок False, вход 1 2 выход , ]), Входной буфер сообщений ([ ]), Выходная очередь сообщений ([ ])
Очередь сообщений:
11
Такте 1, поскольку у Блока 0 установлен флаг True. У Блоков 4, 8, 12
установлен флаг False, поэтому они остаются в очереди на обработку.
4. Время выполнения
12
На самом деле, большего ускорения можно добиться, сократив
количество пересылок данных между процессорами. Также можно изменить
распределение блоков по процессорам. Рассмотрим блоки 13, 14 и 15,
которые обрабатываются процессорами 1, 2 и 3 соответственно. Так как в
топологии «общая шина» за 1 такт может быть передано только 1
сообщение, то для выполнения блока 15 на 3 процессоре ему потребуется
передача данных из процессора 1 и 2. Если мы отдадим блок 15 процессору
1 или 2, то он начнет обрабатываться сразу после одного такта передачи
данных, а не двух, то есть время выполнения алгоритма уменьшится.
13
Выводы
В результате проведения данной работы была исследован
вычислительный процесс определенной функции при помощи топологии
«Общая шина» многопроцессорных вычислительных систем. Был разработан
алгоритм для вычисления функции по вариантам. Были рассмотрены его
характеристики для топологии «Общая шина» для различного числа
процессоров, тактов на пересылку. Был проанализирован журнал выполнения
алгоритма для варианта с лучшим ускорением при одном такте на пересылку
и 4х процессорах. Были рассчитаны эффективность и ускорение
параллельного алгоритма, приведен пример улучшения исходного алгоритма.
При исследовании хода вычислительного процесса было установлено, что
разработанный алгоритм не является оптимальным для исследуемой
топологии из-за её особенностей. Было рассчитано теоретическое
максимальное значение ускорения алгоритма, которое превышает значение,
полученное экспериментально. Большего ускорения можно добиться,
сократив количество пересылок данных между процессорами. Также можно
изменить распределение блоков по процессорам. Был приведен пример
повышения ускорения алгоритма.
14