Академический Документы
Профессиональный Документы
Культура Документы
Лабораторная работа №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
18 1.72 0.29
6 (2х3)
17 1.82 0.30
6 (3х2)
21 1.48 0.16
9(3х3)
22 1.41 0.31
12 (4х3)
22 1.41 0.31
12 (3х4)
Время выполнения алгоритма на одном процессоре: 31
6
Запустим процесс выполнения при двух тактах на пересылку и
зафиксируем время работы, ускорение и эффективность алгоритма согласно
условиям, представленным в таблице 3:
29 1.01 0.18
6 (2х3)
22 1.41 0.23
6 (3х2)
30 1.03 0.11
9(3х3)
33 0.94 0.08
12 (4х3)
34 0.91 0.08
12 (3х4)
Проведем анализ журнала выполнения алгоритма для 6х(3x2)
процессоров при одном такте на пересылку.
Листинг 1.
Распределение блоков по процессорам:
0->0
1->1
2->2
3->3
4->4
5->5
6->0
7->1
8->2
9->3
10->4
11->5
12->0
13->1
14->2
15->3
Алгоритм:
Блок 0 (получает , передает 4 ) Блок 1 (получает , передает 4 5 6 ) Блок 2 (получает , передает 6 7 8 ) Блок 3 (получает , передает
8)
Блок 4 (получает 1 0 , передает 9 ) Блок 5 (получает 1 , передает 10 ) Блок 6 (получает 1 2 , передает 9 12 ) Блок 7 (получает 2 ,
передает 11 10 ) Блок 8 (получает 3 2 , передает 11 12 )
Блок 9 (получает 4 6 , передает 13 ) Блок 10 (получает 5 7 , передает 14 ) Блок 11 (получает 7 8 , передает 13 ) Блок 12 (получает
6 8 , передает 14 )
Блок 13 (получает 11 9 , передает 15 ) Блок 14 (получает 12 10 , передает 15 )
Блок 15 (получает 13 14 , передает )
Такт системы 1:
Процессор 0: Очередь блоков ([ Блок True, вход выход 4 , Блок False, вход 1 2 выход 3 , Блок False, вход 2 выход 2 , ]),
Входной буфер сообщений ([ ]), Выходная очередь сообщений ([ ])
7
Процессор 1: Очередь блоков ([ Блок True, вход выход 4 5 0 , Блок False, вход 2 выход 5 4 , Блок False, вход 5 3 выход
3 , ]), Входной буфер сообщений ([ ]), Выходная очередь сообщений ([ ])
Процессор 2: Очередь блоков ([ Блок True, вход выход 0 1 , Блок False, вход 3 выход 5 0 , Блок False, вход 0 4 выход 3 , ]),
Входной буфер сообщений ([ ]), Выходная очередь сообщений ([ ])
Процессор 3: Очередь блоков ([ Блок True, вход выход 2 , Блок False, вход 4 0 выход 1 , Блок False, вход 1 2 выход , ]),
Входной буфер сообщений ([ ]), Выходная очередь сообщений ([ ])
Процессор 4: Очередь блоков ([ Блок False, вход 1 0 выход 3 , Блок False, вход 5 1 выход 2 , ]), Входной буфер сообщений
([ ]), Выходная очередь сообщений ([ ])
Процессор 5: Очередь блоков ([ Блок False, вход 1 выход 4 , Блок False, вход 1 2 выход 1 , ]), Входной буфер сообщений
([ ]), Выходная очередь сообщений ([ ])
Очередь сообщений:
Такт системы 2:
Процессор 0: Очередь блоков ([ Блок False, вход 1 2 выход 3 , Блок False, вход 2 выход 2 , ]), Входной буфер сообщений
([ Сообщение 2->0 путь -2-0 время 1, ]), Выходная очередь сообщений ([ ])
Процессор 1: Очередь блоков ([ Блок False, вход 2 выход 5 4 , Блок False, вход 5 3 выход 3 , ]), Входной буфер сообщений
([ ]), Выходная очередь сообщений ([ Сообщение 1->5 время 0, Сообщение 1->0 время 0, ])
Процессор 2: Очередь блоков ([ Блок False, вход 3 выход 5 0 , Блок False, вход 0 4 выход 3 , ]), Входной буфер сообщений
([ Сообщение 0->4 путь -0-2-4 время 1, Сообщение 3->2 путь -3-2 время 1, ]), Выходная очередь сообщений ([ Сообщение 2->1
время 0, ])
Процессор 3: Очередь блоков ([ Блок False, вход 4 0 выход 1 , Блок False, вход 1 2 выход , ]), Входной буфер сообщений
([ Сообщение 1->4 путь -1-3-5-4 время 1, ]), Выходная очередь сообщений ([ ])
Процессор 4: Очередь блоков ([ Блок False, вход 1 0 выход 3 , Блок False, вход 5 1 выход 2 , ]), Входной буфер сообщений
([ ]), Выходная очередь сообщений ([ ])
Процессор 5: Очередь блоков ([ Блок False, вход 1 выход 4 , Блок False, вход 1 2 выход 1 , ]), Входной буфер сообщений
([ ]), Выходная очередь сообщений ([ ])
Очередь сообщений:
Такт системы 3:
Процессор 0: Очередь блоков ([ Блок False, вход 1 2 выход 3 , Блок False, вход 2 выход 2 , ]), Входной буфер сообщений
([ Сообщение 2->0 путь -2-0 время 1, ]), Выходная очередь сообщений ([ ])
Процессор 1: Очередь блоков ([ Блок False, вход 2 выход 5 4 , Блок False, вход 5 3 выход 3 , ]), Входной буфер сообщений
([ ]), Выходная очередь сообщений ([ Сообщение 1->0 время 0, ])
Процессор 2: Очередь блоков ([ Блок True, вход 3 выход 5 0 , Блок False, вход 0 4 выход 3 , ]), Входной буфер сообщений ([
Сообщение 0->4 путь -0-2-4 время 1, ]), Выходная очередь сообщений ([ Сообщение 2->1 время 0, ])
Процессор 3: Очередь блоков ([ Блок False, вход 4 0 выход 1 , Блок False, вход 1 2 выход , ]), Входной буфер сообщений
([ Сообщение 1->5 путь -1-3-5 время 1, ]), Выходная очередь сообщений ([ ])
Процессор 4: Очередь блоков ([ Блок False, вход 1 0 выход 3 , Блок False, вход 5 1 выход 2 , ]), Входной буфер сообщений
([ ]), Выходная очередь сообщений ([ ])
Процессор 5: Очередь блоков ([ Блок False, вход 1 выход 4 , Блок False, вход 1 2 выход 1 , ]), Входной буфер сообщений
([ Сообщение 1->4 путь -1-3-5-4 время 1, ]), Выходная очередь сообщений ([ ])
Очередь сообщений:
Такт системы 4:
Процессор 0: Очередь блоков ([ Блок False, вход 1 2 выход 3 , Блок False, вход 2 выход 2 , ]), Входной буфер сообщений
([ Сообщение 2->0 путь -2-0 время 1, Сообщение 1->0 путь -1-0 время 1, Сообщение 2->1 путь -2-0-1 время 1, ]), Выходная
очередь сообщений ([ ])
Процессор 1: Очередь блоков ([ Блок False, вход 2 выход 5 4 , Блок False, вход 5 3 выход 3 , ]), Входной буфер сообщений
([ ]), Выходная очередь сообщений ([ ])
Процессор 2: Очередь блоков ([ Блок False, вход 0 4 выход 3 , ]), Входной буфер сообщений ([ ]), Выходная очередь
сообщений ([ Сообщение 0->4 путь -0-2-4 время 1, Сообщение 2->5 время 0, Сообщение 2->0 время 0, ])
Процессор 3: Очередь блоков ([ Блок False, вход 4 0 выход 1 , Блок False, вход 1 2 выход , ]), Входной буфер сообщений
([ ]), Выходная очередь сообщений ([ ])
Процессор 4: Очередь блоков ([ Блок False, вход 1 0 выход 3 , Блок False, вход 5 1 выход 2 , ]), Входной буфер сообщений
([ Сообщение 1->4 путь -1-3-5-4 время 1, ]), Выходная очередь сообщений ([ ])
Процессор 5: Очередь блоков ([ Блок False, вход 1 выход 4 , Блок False, вход 1 2 выход 1 , ]), Входной буфер сообщений
([ Сообщение 1->5 путь -1-3-5 время 1, ]), Выходная очередь сообщений ([ ])
Очередь сообщений:
Такт системы 5:
Процессор 0: Очередь блоков ([ Блок True, вход 1 2 выход 3 , Блок False, вход 2 выход 2 , ]), Входной буфер сообщений
([ Сообщение 2->1 путь -2-0-1 время 1, ]), Выходная очередь сообщений ([ ])
Процессор 1: Очередь блоков ([ Блок False, вход 2 выход 5 4 , Блок False, вход 5 3 выход 3 , ]), Входной буфер сообщений
([ ]), Выходная очередь сообщений ([ ])
Процессор 2: Очередь блоков ([ Блок False, вход 0 4 выход 3 , ]), Входной буфер сообщений ([ ]), Выходная очередь
сообщений ([ Сообщение 2->5 время 0, Сообщение 2->0 время 0, ])
Процессор 3: Очередь блоков ([ Блок False, вход 4 0 выход 1 , Блок False, вход 1 2 выход , ]), Входной буфер сообщений
([ ]), Выходная очередь сообщений ([ ])
Процессор 4: Очередь блоков ([ Блок False, вход 1 0 выход 3 , Блок False, вход 5 1 выход 2 , ]), Входной буфер сообщений
([ Сообщение 1->4 путь -1-3-5-4 время 1, Сообщение 0->4 путь -0-2-4 время 1, ]), Выходная очередь сообщений ([ ])
Процессор 5: Очередь блоков ([ Блок True, вход 1 выход 4 , Блок False, вход 1 2 выход 1 , ]), Входной буфер сообщений
([ ]), Выходная очередь сообщений ([ ])
Очередь сообщений:
8
Такт системы 6:
Процессор 0: Очередь блоков ([ Блок False, вход 2 выход 2 , ]), Входной буфер сообщений ([ ]), Выходная очередь сообщений
([ Сообщение 0->3 время 0, ])
Процессор 1: Очередь блоков ([ Блок False, вход 2 выход 5 4 , Блок False, вход 5 3 выход 3 , ]), Входной буфер сообщений
([ Сообщение 2->1 путь -2-0-1 время 1, ]), Выходная очередь сообщений ([ ])
Процессор 2: Очередь блоков ([ Блок False, вход 0 4 выход 3 , ]), Входной буфер сообщений ([ ]), Выходная очередь
сообщений ([ Сообщение 2->0 время 0, ])
Процессор 3: Очередь блоков ([ Блок False, вход 4 0 выход 1 , Блок False, вход 1 2 выход , ]), Входной буфер сообщений
([ ]), Выходная очередь сообщений ([ ])
Процессор 4: Очередь блоков ([ Блок True, вход 1 0 выход 3 , Блок False, вход 5 1 выход 2 , ]), Входной буфер сообщений ([
Сообщение 2->5 путь -2-4-5 время 1, Сообщение 5->4 путь -5-4 время 1, ]), Выходная очередь сообщений ([ ])
Процессор 5: Очередь блоков ([ Блок False, вход 1 2 выход 1 , ]), Входной буфер сообщений ([ ]), Выходная очередь
сообщений ([ ])
Очередь сообщений:
Такт системы 7:
Процессор 0: Очередь блоков ([ Блок False, вход 2 выход 2 , ]), Входной буфер сообщений ([ Сообщение 2->0 путь -2-0 время
1, ]), Выходная очередь сообщений ([ ])
Процессор 1: Очередь блоков ([ Блок True, вход 2 выход 5 4 , Блок False, вход 5 3 выход 3 , ]), Входной буфер сообщений ([
]), Выходная очередь сообщений ([ ])
Процессор 2: Очередь блоков ([ Блок False, вход 0 4 выход 3 , ]), Входной буфер сообщений ([ Сообщение 0->3 путь -0-2-3
время 1, ]), Выходная очередь сообщений ([ ])
Процессор 3: Очередь блоков ([ Блок False, вход 4 0 выход 1 , Блок False, вход 1 2 выход , ]), Входной буфер сообщений
([ ]), Выходная очередь сообщений ([ ])
Процессор 4: Очередь блоков ([ Блок False, вход 5 1 выход 2 , ]), Входной буфер сообщений ([ Сообщение 5->4 путь -5-4
время 1, ]), Выходная очередь сообщений ([ Сообщение 4->3 время 0, ])
Процессор 5: Очередь блоков ([ Блок False, вход 1 2 выход 1 , ]), Входной буфер сообщений ([ Сообщение 2->5 путь -2-4-5
время 1, ]), Выходная очередь сообщений ([ ])
Очередь сообщений:
Такт системы 8:
Процессор 0: Очередь блоков ([ Блок True, вход 2 выход 2 , ]), Входной буфер сообщений ([ ]), Выходная очередь сообщений
([ ])
Процессор 1: Очередь блоков ([ Блок False, вход 5 3 выход 3 , ]), Входной буфер сообщений ([ ]), Выходная очередь
сообщений ([ Сообщение 1->4 время 0, ])
Процессор 2: Очередь блоков ([ Блок False, вход 0 4 выход 3 , ]), Входной буфер сообщений ([ ]), Выходная очередь
сообщений ([ ])
Процессор 3: Очередь блоков ([ Блок False, вход 4 0 выход 1 , Блок False, вход 1 2 выход , ]), Входной буфер сообщений
([ Сообщение 1->5 путь -1-3-5 время 1, Сообщение 0->3 путь -0-2-3 время 1, ]), Выходная очередь сообщений ([ ])
Процессор 4: Очередь блоков ([ Блок False, вход 5 1 выход 2 , ]), Входной буфер сообщений ([ Сообщение 5->4 путь -5-4
время 1, ]), Выходная очередь сообщений ([ ])
Процессор 5: Очередь блоков ([ Блок False, вход 1 2 выход 1 , ]), Входной буфер сообщений ([ Сообщение 2->5 путь -2-4-5
время 1, Сообщение 4->3 путь -4-5-3 время 1, ]), Выходная очередь сообщений ([ ])
Очередь сообщений:
Такт системы 9:
Процессор 0: Очередь блоков ([ ]), Входной буфер сообщений ([ ]), Выходная очередь сообщений ([ ])
Процессор 1: Очередь блоков ([ Блок False, вход 5 3 выход 3 , ]), Входной буфер сообщений ([ ]), Выходная очередь
сообщений ([ ])
Процессор 2: Очередь блоков ([ Блок False, вход 0 4 выход 3 , ]), Входной буфер сообщений ([ Сообщение 0->2 путь -0-2
время 1, ]), Выходная очередь сообщений ([ ])
Процессор 3: Очередь блоков ([ Блок False, вход 4 0 выход 1 , Блок False, вход 1 2 выход , ]), Входной буфер сообщений
([ Сообщение 0->3 путь -0-2-3 время 1, Сообщение 1->4 путь -1-3-2-4 время 1, Сообщение 4->3 путь -4-5-3 время 1, ]),
Выходная очередь сообщений ([ ])
Процессор 4: Очередь блоков ([ Блок False, вход 5 1 выход 2 , ]), Входной буфер сообщений ([ Сообщение 5->4 путь -5-4
время 1, ]), Выходная очередь сообщений ([ ])
Процессор 5: Очередь блоков ([ Блок False, вход 1 2 выход 1 , ]), Входной буфер сообщений ([ Сообщение 2->5 путь -2-4-5
время 1, Сообщение 1->5 путь -1-3-5 время 1, ]), Выходная очередь сообщений ([ ])
Очередь сообщений:
9
Такт системы 11:
Процессор 0: Очередь блоков ([ ]), Входной буфер сообщений ([ ]), Выходная очередь сообщений ([ ])
Процессор 1: Очередь блоков ([ Блок False, вход 5 3 выход 3 , ]), Входной буфер сообщений ([ ]), Выходная очередь
сообщений ([ ])
Процессор 2: Очередь блоков ([ Блок False, вход 0 4 выход 3 , ]), Входной буфер сообщений ([ Сообщение 0->2 путь -0-2
время 1, Сообщение 1->4 путь -1-3-2-4 время 1, ]), Выходная очередь сообщений ([ ])
Процессор 3: Очередь блоков ([ Блок False, вход 1 2 выход , ]), Входной буфер сообщений ([ Сообщение 5->1 путь -5-3-1
время 1, ]), Выходная очередь сообщений ([ Сообщение 3->1 время 0, ])
Процессор 4: Очередь блоков ([ Блок False, вход 5 1 выход 2 , ]), Входной буфер сообщений ([ Сообщение 5->4 путь -5-4
время 1, ]), Выходная очередь сообщений ([ ])
Процессор 5: Очередь блоков ([ ]), Входной буфер сообщений ([ ]), Выходная очередь сообщений ([ ])
Очередь сообщений:
Процессо 0 1 2 3 4 5
р
Блоки 0 6 12 1 7 13 2 8 14 3 9 15 4 10 5 11
Номер в 1 2 3 1 2 3 1 2 3 1 2 3 1 2 1 2
очереди
2. Алгоритм
3. Такты
Листинг 2.
11
Такт системы 1:
Процессор 0: Очередь блоков ([ Блок True, вход выход 4 , Блок False, вход 1 2 выход 3 , Блок False, вход 2 выход 2 , ]),
Входной буфер сообщений ([ ]), Выходная очередь сообщений ([ ])
Процессор 1: Очередь блоков ([ Блок True, вход выход 4 5 0 , Блок False, вход 2 выход 5 4 , Блок False, вход 5 3 выход
3 , ]), Входной буфер сообщений ([ ]), Выходная очередь сообщений ([ ])
Процессор 2: Очередь блоков ([ Блок True, вход выход 0 1 , Блок False, вход 3 выход 5 0 , Блок False, вход 0 4 выход 3 , ]),
Входной буфер сообщений ([ ]), Выходная очередь сообщений ([ ])
Процессор 3: Очередь блоков ([ Блок True, вход выход 2 , Блок False, вход 4 0 выход 1 , Блок False, вход 1 2 выход , ]),
Входной буфер сообщений ([ ]), Выходная очередь сообщений ([ ])
Процессор 4: Очередь блоков ([ Блок False, вход 1 0 выход 3 , Блок False, вход 5 1 выход 2 , ]), Входной буфер сообщений
([ ]), Выходная очередь сообщений ([ ])
Процессор 5: Очередь блоков ([ Блок False, вход 1 выход 4 , Блок False, вход 1 2 выход 1 , ]), Входной буфер сообщений
([ ]), Выходная очередь сообщений ([ ])
Очередь сообщений:
12
Аналогичным образом описываются состояния прочих процессоров на
всех тактах системы.
4. Время выполнения
13
Сравнение характеристик системы для разных топологий
Рассмотрим выполнение алгоритма при одном такте на пересылку. Время
выполнения на одном процессоре – 31.
2 17 18 17 17
3 13 18 19 13
4 13 17 19 15
5 12 19 20 17
6 11 22 23 20
2 1 1 1 1
3 3 3 2 3
4 6 4 3 4
5 10 5 4 5
6 15 6 5 6
18
6 (2х3) 7
17
6 (3х2) 7
21
9 (3х3) 12
22
12 (4х3) 17
22
12 (3x4) 17
8 (2х2х2) 16 12
12 (2х3х2) 17 20
18 (2х3х3) 18 33
27 (3х3х3) 23 54
15
Выводы
В результате проведения данной работы была исследован
вычислительный процесс определенной функции при помощи топологии
«Решетка» многопроцессорных вычислительных систем. Был разработан
алгоритм для вычисления функции по вариантам. Были рассмотрены его
характеристики для топологии «Решетка» для различного числа процессоров,
тактов на пересылку. Был проанализирован журнал выполнения алгоритма
для варианта с лучшим ускорением при одном такте на пересылку и 6х
процессорах. Были рассчитаны эффективность и ускорение параллельного
алгоритма, приведен пример улучшения исходного алгоритма. Было
произведено сравнение топологий для данного алгоритма, учитывая время
выполнения алгоритма и стоимость топологии. Было установлено, что
лучшими системами для выполнения заданного алгоритма являются
«Полный граф» 3х процессорах.
16