Академический Документы
Профессиональный Документы
Культура Документы
Лабораторная работа №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 17 1.82 0.91
3 13 2.38 0.79
4 13 2.38 0.60
5 12 2.58 0.52
6 11 2.82 0.47
6
Время выполнения алгоритма на одном процессоре: 31
2 18 1.72 0.86
3 15 2.07 0.69
4 17 1.82 0.46
5 16 1.94 0.39
6 15 2.07 0.34
Листинг 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 (получает , передает 4 5 6 ) Блок 2 (получает , передает 6 7 8 ) Блок 3 (получает , передает
8)
Блок 4 (получает 0 1 , передает 9 ) Блок 5 (получает 1 , передает 10 ) Блок 6 (получает 1 2 , передает 9 12 ) Блок 7 (получает 2 ,
передает 11 10 ) Блок 8 (получает 2 3 , передает 12 11 )
Блок 9 (получает 4 6 , передает 13 ) Блок 10 (получает 5 7 , передает 14 ) Блок 11 (получает 7 8 , передает 13 ) Блок 12 (получает
6 8 , передает 14 )
Блок 13 (получает 9 11 , передает 15 ) Блок 14 (получает 10 12 , передает 15 )
Блок 15 (получает 13 14 , передает )
7
Такт системы 1:
Процессор 0: Очередь блоков ([ Блок True, вход выход , Блок False, вход 1 выход 1 , Блок False, вход 2 3 выход 3 , Блок
False, вход 2 выход 2 , ]), Входной буфер сообщений ([ ]), Выходная очередь сообщений ([ ])
Процессор 1: Очередь блоков ([ Блок True, вход выход 0 2 , Блок False, вход выход 2 , Блок False, вход 0 2 выход , Блок
False, вход 3 выход 3 , ]), Входной буфер сообщений ([ ]), Выходная очередь сообщений ([ ])
Процессор 2: Очередь блоков ([ Блок True, вход выход 3 0 , Блок 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->0 путь -1-0 время 1, Сообщение 3->0 путь -3-0 время 1, ]), Выходная очередь
сообщений ([ ])
Процессор 1: Очередь блоков ([ Блок False, вход выход 2 , Блок False, вход 0 2 выход , Блок False, вход 3 выход 3 , ]),
Входной буфер сообщений ([ ]), Выходная очередь сообщений ([ Сообщение 1->2 время 0, ])
Процессор 2: Очередь блоков ([ Блок False, вход 1 выход 1 0 , Блок False, вход 1 3 выход , Блок False, вход 0 выход 3 , ]),
Входной буфер сообщений ([ ]), Выходная очередь сообщений ([ Сообщение 2->0 время 0, ])
Процессор 3: Очередь блоков ([ Блок False, вход 2 выход 2 , Блок False, вход 0 выход 1 , Блок False, вход 1 2 выход , ]),
Входной буфер сообщений ([ Сообщение 2->3 путь -2-3 время 1, ]), Выходная очередь сообщений ([ ])
Очередь сообщений:
Такт системы 3:
Процессор 0: Очередь блоков ([ Блок True, вход 1 выход 1 , Блок False, вход 2 3 выход 3 , Блок False, вход 2 выход 2 , ]),
Входной буфер сообщений ([ Сообщение 3->0 путь -3-0 время 1, Сообщение 2->0 путь -2-0 время 1, ]), Выходная очередь
сообщений ([ ])
Процессор 1: Очередь блоков ([ Блок True, вход выход 2 , Блок False, вход 0 2 выход , Блок False, вход 3 выход 3 , ]),
Входной буфер сообщений ([ ]), Выходная очередь сообщений ([ Сообщение 1->2 время 0, ])
Процессор 2: Очередь блоков ([ Блок False, вход 1 выход 1 0 , Блок False, вход 1 3 выход , Блок False, вход 0 выход 3 , ]),
Входной буфер сообщений ([ ]), Выходная очередь сообщений ([ ])
Процессор 3: Очередь блоков ([ Блок True, вход 2 выход 2 , Блок False, вход 0 выход 1 , Блок False, вход 1 2 выход , ]),
Входной буфер сообщений ([ ]), Выходная очередь сообщений ([ ])
Очередь сообщений:
Такт системы 4:
Процессор 0: Очередь блоков ([ Блок False, вход 2 3 выход 3 , Блок False, вход 2 выход 2 , ]), Входной буфер сообщений
([ Сообщение 3->0 путь -3-0 время 1, Сообщение 2->0 путь -2-0 время 1, ]), Выходная очередь сообщений ([ ])
Процессор 1: Очередь блоков ([ Блок False, вход 0 2 выход , Блок False, вход 3 выход 3 , ]), Входной буфер сообщений
([ Сообщение 0->1 путь -0-1 время 1, ]), Выходная очередь сообщений ([ Сообщение 1->2 время 0, ])
Процессор 2: Очередь блоков ([ Блок False, вход 1 выход 1 0 , Блок False, вход 1 3 выход , Блок False, вход 0 выход 3 , ]),
Входной буфер сообщений ([ Сообщение 1->2 путь -1-2 время 1, Сообщение 3->2 путь -3-2 время 1, ]), Выходная очередь
сообщений ([ ])
Процессор 3: Очередь блоков ([ Блок False, вход 0 выход 1 , Блок False, вход 1 2 выход , ]), Входной буфер сообщений ([ ]),
Выходная очередь сообщений ([ ])
Очередь сообщений:
Такт системы 5:
Процессор 0: Очередь блоков ([ Блок True, вход 2 3 выход 3 , Блок False, вход 2 выход 2 , ]), Входной буфер сообщений
([ ]), Выходная очередь сообщений ([ ])
Процессор 1: Очередь блоков ([ Блок False, вход 0 2 выход , Блок False, вход 3 выход 3 , ]), Входной буфер сообщений
([ Сообщение 0->1 путь -0-1 время 1, ]), Выходная очередь сообщений ([ ])
Процессор 2: Очередь блоков ([ Блок True, вход 1 выход 1 0 , Блок False, вход 1 3 выход , Блок False, вход 0 выход 3 , ]),
Входной буфер сообщений ([ Сообщение 3->2 путь -3-2 время 1, Сообщение 1->2 путь -1-2 время 1, ]), Выходная очередь
сообщений ([ ])
Процессор 3: Очередь блоков ([ Блок False, вход 0 выход 1 , Блок False, вход 1 2 выход , ]), Входной буфер сообщений ([ ]),
Выходная очередь сообщений ([ ])
Очередь сообщений:
Такт системы 6:
Процессор 0: Очередь блоков ([ Блок False, вход 2 выход 2 , ]), Входной буфер сообщений ([ ]), Выходная очередь сообщений
([ ])
Процессор 1: Очередь блоков ([ Блок False, вход 0 2 выход , Блок False, вход 3 выход 3 , ]), Входной буфер сообщений
([ Сообщение 0->1 путь -0-1 время 1, Сообщение 2->1 путь -2-1 время 1, ]), Выходная очередь сообщений ([ ])
Процессор 2: Очередь блоков ([ Блок False, вход 1 3 выход , Блок False, вход 0 выход 3 , ]), Входной буфер сообщений
([ Сообщение 3->2 путь -3-2 время 1, Сообщение 1->2 путь -1-2 время 1, ]), Выходная очередь сообщений ([ Сообщение 2->0
время 0, ])
Процессор 3: Очередь блоков ([ Блок False, вход 0 выход 1 , Блок False, вход 1 2 выход , ]), Входной буфер сообщений
([ Сообщение 0->3 путь -0-3 время 1, ]), Выходная очередь сообщений ([ ])
Очередь сообщений:
Такт системы 7:
8
Процессор 0: Очередь блоков ([ Блок False, вход 2 выход 2 , ]), Входной буфер сообщений ([ ]), Выходная очередь сообщений
([ ])
Процессор 1: Очередь блоков ([ Блок True, вход 0 2 выход , Блок False, вход 3 выход 3 , ]), Входной буфер сообщений ([ ]),
Выходная очередь сообщений ([ ])
Процессор 2: Очередь блоков ([ Блок True, вход 1 3 выход , Блок False, вход 0 выход 3 , ]), Входной буфер сообщений ([ ]),
Выходная очередь сообщений ([ Сообщение 2->0 время 0, ])
Процессор 3: Очередь блоков ([ Блок True, вход 0 выход 1 , Блок False, вход 1 2 выход , ]), Входной буфер сообщений ([ ]),
Выходная очередь сообщений ([ ])
Очередь сообщений:
Такт системы 8:
Процессор 0: Очередь блоков ([ Блок False, вход 2 выход 2 , ]), Входной буфер сообщений ([ Сообщение 2->0 путь -2-0 время
1, ]), Выходная очередь сообщений ([ ])
Процессор 1: Очередь блоков ([ Блок False, вход 3 выход 3 , ]), Входной буфер сообщений ([ Сообщение 3->1 путь -3-1 время
1, ]), Выходная очередь сообщений ([ ])
Процессор 2: Очередь блоков ([ Блок False, вход 0 выход 3 , ]), Входной буфер сообщений ([ ]), Выходная очередь сообщений
([ ])
Процессор 3: Очередь блоков ([ Блок False, вход 1 2 выход , ]), Входной буфер сообщений ([ ]), Выходная очередь сообщений
([ ])
Очередь сообщений:
Такт системы 9:
Процессор 0: Очередь блоков ([ Блок True, вход 2 выход 2 , ]), Входной буфер сообщений ([ ]), Выходная очередь сообщений
([ ])
Процессор 1: Очередь блоков ([ Блок True, вход 3 выход 3 , ]), Входной буфер сообщений ([ ]), Выходная очередь сообщений
([ ])
Процессор 2: Очередь блоков ([ Блок False, вход 0 выход 3 , ]), Входной буфер сообщений ([ ]), Выходная очередь сообщений
([ ])
Процессор 3: Очередь блоков ([ Блок False, вход 1 2 выход , ]), Входной буфер сообщений ([ ]), Выходная очередь сообщений
([ ])
Очередь сообщений:
9
1. Распределение блоков по процессорам.
Процессор 0 1 2 3
Блоки 0 4 8 12 1 5 9 13 2 6 10 14 3 7 11 15
Номер в 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, вход выход 0 2 , Блок False, вход выход 2 , Блок False, вход 0 2 выход ,
Блок False, вход 3 выход 3 , ]), Входной буфер сообщений ([ ]), Выходная очередь сообщений ([ ])
Процессор 2: Очередь блоков ([ Блок True, вход выход 3 0 , Блок False, вход 1 выход 1 0 , Блок False, вход 1 3
выход , Блок False, вход 0 выход 3 , ]), Входной буфер сообщений ([ ]), Выходная очередь сообщений ([ ])
Процессор 3: Очередь блоков ([ Блок True, вход выход 0 , Блок False, вход 2 выход 2 , Блок False, вход 0 выход 1 ,
Блок False, вход 1 2 выход , ]), Входной буфер сообщений ([ ]), Выходная очередь сообщений ([ ])
Очередь сообщений:
4. Время выполнения
12
Выводы
В результате проведения данной работы была исследован
вычислительный процесс определенной функции при помощи топологии
«Каждый с каждым» многопроцессорных вычислительных систем. Был
разработан алгоритм для вычисления функции по вариантам. Были
рассмотрены его характеристики для топологии «Каждый с каждым» для
различного числа процессоров, тактов на пересылку. Был проанализирован
журнал выполнения алгоритма для варианта с лучшим ускорением при
одном такте на пересылку и 4х процессорах. Были рассчитаны
эффективность и ускорение параллельного алгоритма, приведен пример
улучшения исходного алгоритма. При исследовании хода вычислительного
процесса были обнаружены простои некоторых процессоров при выполнении
алгоритма, следовательно, построенная схема не является оптимальной. Было
рассчитано теоретическое максимальное значение ускорения алгоритма,
которое превышает значение, полученное экспериментально. Большего
ускорения можно добиться, доработав схему так, чтобы не образовывалась
выходная очередь сообщений у процессоров. Также можно изменить
распределение блоков по процессорам.
13