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

«Национальный исследовательский ядерный университет «МИФИ»

ИНСТИТУТ ИНТЕЛЛЕКТУАЛЬНЫХ КИБЕРНЕТИЧЕСКИХ СИСТЕМ

КАФЕДРА КОМПЬЮТЕРНЫХ СИСТЕМ И ТЕХНОЛОГИЙ (012)

Лабораторная работа №2
по учебной дисциплине «Методы параллельной обработки»

Эффективность параллельного решения задачи («Решетка»).

Вариант 5

Выполнил: Герасимычев Д.М.


Группа: С19-501
Проверил: Шувалов В. Б.

Москва, 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) Запустить процесс выполнения и зарегистрировать результаты в соответствии с


табл. 2 при различных значениях количества процессоров.

5) Рассчитать эффективность и ускорение параллельного алгоритма при его


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

6) Провести анализ журнала выполнения алгоритма для варианта, имеющего


лучшие показатели эффективности и ускорения (образец - см. Приложение).

7) Определить причины отклонения ускорения от максимального значения и


предложить вариант их устранения.

8) Повторить п.п. 3-7 для всех вариантов топологий.

9) Выбрать из всех архитектур вычислительных систем такую, при выполнении на


которой заданный алгоритм имел бы самые лучшие показатели ускорения и
эффективности.

10) Результаты отразить в лабораторном отчете

2
Теоретическая часть
Диаметр – показатель, определяемый как максимальное расстояние между двумя
узлами системы (под расстоянием обычно понимается величина кратчайшего пути между
узлами системы). Эта величина может характеризовать максимально необходимое время
для передачи данных между узлами, поскольку время передачи обычно прямо
пропорционально длине пути;

Связность - показатель, характеризующий наличие разных маршрутов передачи


данных между процессорами сети. Конкретный вид данного показателя может быть
определен, например, как минимальное количество дуг, которое надо удалить для
разделения сети передачи данных на две несвязные области;

Ширина бинарного деления - показатель, определяемый как минимальное


количество дуг, которое надо удалить для разделения сети передачи данных на две
несвязные области одинакового размера;

Стоимость – показатель, который может быть определен, например, как общее


количество линий передачи данных в многопроцессорной вычислительной системе.

Степенью параллелизма численного алгоритма называется число его операций,


которые можно выполнять параллельно.

Средней степенью параллелизма численного алгоритма называется отношение


общего числа операций алгоритма к числу его этапов.

Ускорением параллельного алгоритма называется отношение времени выполнения


алгоритма на одном процессоре ко времени выполнения алгоритма в системе из P
процессоров.

Для задачи сложения векторов следовало бы ожидать, что SP = P, т. е. ускорение


максимально. Однако следует заметить, что в определении ускорения подразумеваются
действительные времена вычислений. Это делает определение более реалистичным, но
затрудняет его использование в том случае, если требуемые времена неизвестны.

Эффективностью параллельного алгоритма называется отношение ускорения


параллельного алгоритма к числу процессоров в системе.

Эффективностью параллельного алгоритма по отношению к наилучшему


последовательному алгоритму называется отношение ускорения параллельного алгоритма

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 )

Выполнение

Алгоритм вычисления функции представлен на рисунке 1:

Рисунок 1 – Алгоритм вычисления функции

В таблице 1 представлена структурная таблица для алгоритма вычисления


функции:

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:

Таблица 2 – Время работы, ускорение и эффективность алгоритма при одном


такте на пересылку
Количество Время Ускорени
Эффективность
процессоров работы е

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:

Таблица 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 представлен журнал выполнения алгоритма.

Листинг 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, ]), Выходная очередь сообщений ([ ])
Очередь сообщений:

Такт системы 10:


Процессор 0: Очередь блоков ([ ]), Входной буфер сообщений ([ ]), Выходная очередь сообщений ([ ])
Процессор 1: Очередь блоков ([ Блок False, вход 5 3 выход 3 , ]), Входной буфер сообщений ([ ]), Выходная очередь
сообщений ([ ])
Процессор 2: Очередь блоков ([ Блок False, вход 0 4 выход 3 , ]), Входной буфер сообщений ([ Сообщение 0->2 путь -0-2
время 1, ]), Выходная очередь сообщений ([ ])
Процессор 3: Очередь блоков ([ Блок True, вход 4 0 выход 1 , Блок False, вход 1 2 выход , ]), Входной буфер сообщений
([ Сообщение 1->4 путь -1-3-2-4 время 1, ]), Выходная очередь сообщений ([ ])
Процессор 4: Очередь блоков ([ Блок False, вход 5 1 выход 2 , ]), Входной буфер сообщений ([ Сообщение 5->4 путь -5-4
время 1, ]), Выходная очередь сообщений ([ ])
Процессор 5: Очередь блоков ([ Блок True, вход 1 2 выход 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: Очередь блоков ([ ]), Входной буфер сообщений ([ ]), Выходная очередь сообщений ([ ])
Очередь сообщений:

Такт системы 12:


Процессор 0: Очередь блоков ([ ]), Входной буфер сообщений ([ ]), Выходная очередь сообщений ([ ])
Процессор 1: Очередь блоков ([ Блок False, вход 5 3 выход 3 , ]), Входной буфер сообщений ([ Сообщение 3->1 путь -3-1
время 1, ]), Выходная очередь сообщений ([ ])
Процессор 2: Очередь блоков ([ Блок False, вход 0 4 выход 3 , ]), Входной буфер сообщений ([ Сообщение 0->2 путь -0-2
время 1, ]), Выходная очередь сообщений ([ ])
Процессор 3: Очередь блоков ([ Блок False, вход 1 2 выход , ]), Входной буфер сообщений ([ ]), Выходная очередь сообщений
([ Сообщение 5->1 путь -5-3-1 время 1, ])
Процессор 4: Очередь блоков ([ Блок False, вход 5 1 выход 2 , ]), Входной буфер сообщений ([ Сообщение 5->4 путь -5-4
время 1, Сообщение 1->4 путь -1-3-2-4 время 1, ]), Выходная очередь сообщений ([ ])
Процессор 5: Очередь блоков ([ ]), Входной буфер сообщений ([ ]), Выходная очередь сообщений ([ ])
Очередь сообщений:

Такт системы 13:


Процессор 0: Очередь блоков ([ ]), Входной буфер сообщений ([ ]), Выходная очередь сообщений ([ ])
Процессор 1: Очередь блоков ([ Блок False, вход 5 3 выход 3 , ]), Входной буфер сообщений ([ Сообщение 3->1 путь -3-1
время 1, Сообщение 5->1 путь -5-3-1 время 1, ]), Выходная очередь сообщений ([ ])
Процессор 2: Очередь блоков ([ Блок False, вход 0 4 выход 3 , ]), Входной буфер сообщений ([ Сообщение 0->2 путь -0-2
время 1, ]), Выходная очередь сообщений ([ ])
Процессор 3: Очередь блоков ([ Блок False, вход 1 2 выход , ]), Входной буфер сообщений ([ ]), Выходная очередь сообщений
([ ])
Процессор 4: Очередь блоков ([ Блок True, вход 5 1 выход 2 , ]), Входной буфер сообщений ([ ]), Выходная очередь
сообщений ([ ])
Процессор 5: Очередь блоков ([ ]), Входной буфер сообщений ([ ]), Выходная очередь сообщений ([ ])
Очередь сообщений:

Такт системы 14:


Процессор 0: Очередь блоков ([ ]), Входной буфер сообщений ([ ]), Выходная очередь сообщений ([ ])
Процессор 1: Очередь блоков ([ Блок True, вход 5 3 выход 3 , ]), Входной буфер сообщений ([ ]), Выходная очередь
сообщений ([ ])
Процессор 2: Очередь блоков ([ Блок False, вход 0 4 выход 3 , ]), Входной буфер сообщений ([ Сообщение 0->2 путь -0-2
время 1, Сообщение 4->2 путь -4-2 время 1, ]), Выходная очередь сообщений ([ ])
Процессор 3: Очередь блоков ([ Блок False, вход 1 2 выход , ]), Входной буфер сообщений ([ ]), Выходная очередь сообщений
([ ])
Процессор 4: Очередь блоков ([ ]), Входной буфер сообщений ([ ]), Выходная очередь сообщений ([ ])
Процессор 5: Очередь блоков ([ ]), Входной буфер сообщений ([ ]), Выходная очередь сообщений ([ ])
Очередь сообщений:

Такт системы 15:


Процессор 0: Очередь блоков ([ ]), Входной буфер сообщений ([ ]), Выходная очередь сообщений ([ ])
Процессор 1: Очередь блоков ([ ]), Входной буфер сообщений ([ ]), Выходная очередь сообщений ([ ])
Процессор 2: Очередь блоков ([ Блок True, вход 0 4 выход 3 , ]), Входной буфер сообщений ([ ]), Выходная очередь
сообщений ([ ])
Процессор 3: Очередь блоков ([ Блок False, вход 1 2 выход , ]), Входной буфер сообщений ([ Сообщение 1->3 путь -1-3 время
1, ]), Выходная очередь сообщений ([ ])
Процессор 4: Очередь блоков ([ ]), Входной буфер сообщений ([ ]), Выходная очередь сообщений ([ ])
Процессор 5: Очередь блоков ([ ]), Входной буфер сообщений ([ ]), Выходная очередь сообщений ([ ])
Очередь сообщений:

Такт системы 16:


Процессор 0: Очередь блоков ([ ]), Входной буфер сообщений ([ ]), Выходная очередь сообщений ([ ])
Процессор 1: Очередь блоков ([ ]), Входной буфер сообщений ([ ]), Выходная очередь сообщений ([ ])
Процессор 2: Очередь блоков ([ ]), Входной буфер сообщений ([ ]), Выходная очередь сообщений ([ ])
Процессор 3: Очередь блоков ([ Блок False, вход 1 2 выход , ]), Входной буфер сообщений ([ Сообщение 1->3 путь -1-3 время
1, Сообщение 2->3 путь -2-3 время 1, ]), Выходная очередь сообщений ([ ])
Процессор 4: Очередь блоков ([ ]), Входной буфер сообщений ([ ]), Выходная очередь сообщений ([ ])
Процессор 5: Очередь блоков ([ ]), Входной буфер сообщений ([ ]), Выходная очередь сообщений ([ ])
Очередь сообщений:

Такт системы 17:


Процессор 0: Очередь блоков ([ ]), Входной буфер сообщений ([ ]), Выходная очередь сообщений ([ ])
10
Процессор 1: Очередь блоков ([ ]), Входной буфер сообщений ([ ]), Выходная очередь сообщений ([ ])
Процессор 2: Очередь блоков ([ ]), Входной буфер сообщений ([ ]), Выходная очередь сообщений ([ ])
Процессор 3: Очередь блоков ([ Блок True, вход 1 2 выход , ]), Входной буфер сообщений ([ ]), Выходная очередь сообщений
([ ])
Процессор 4: Очередь блоков ([ ]), Входной буфер сообщений ([ ]), Выходная очередь сообщений ([ ])
Процессор 5: Очередь блоков ([ ]), Входной буфер сообщений ([ ]), Выходная очередь сообщений ([ ])
Очередь сообщений:

Такт системы 18:


Процессор 0: Очередь блоков ([ ]), Входной буфер сообщений ([ ]), Выходная очередь сообщений ([ ])
Процессор 1: Очередь блоков ([ ]), Входной буфер сообщений ([ ]), Выходная очередь сообщений ([ ])
Процессор 2: Очередь блоков ([ ]), Входной буфер сообщений ([ ]), Выходная очередь сообщений ([ ])
Процессор 3: Очередь блоков ([ ]), Входной буфер сообщений ([ ]), Выходная очередь сообщений ([ ])
Процессор 4: Очередь блоков ([ ]), Входной буфер сообщений ([ ]), Выходная очередь сообщений ([ ])
Процессор 5: Очередь блоков ([ ]), Входной буфер сообщений ([ ]), Выходная очередь сообщений ([ ])
Очередь сообщений:
Время выполнения: 17

1. Распределение блоков по процессорам.

В данном случае, имеем следующее распределение блоков по процессорам


(таблица 4):
Таблица 4

Процессо 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. Алгоритм

Приведенное в листинге 1 описание блоков алгоритма каждого яруса также


содержится в понятном виде в таблице 1

3. Такты

После описания структуры алгоритма идёт последовательность записей,


описывающих действия процессоров на каждом такте выполнения
алгоритма. Рассмотрим Такт 1 (листинг 2):

Листинг 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 , ]), Входной буфер сообщений
([ ]), Выходная очередь сообщений ([ ])
Очередь сообщений:

Первая строка указывает на номер такта, в нашем случае это Такт 1.


Далее идёт описание состояний процессоров. Вторая строка описывает
состояние Процессора 0:

• В очереди на обработку Процессором 0 стоят три блока (таблица 3) –


Блок 0, Блок 6, Блок 12. Блоки в очереди указываются в соответствии с
разделом журнала «Распределение блоков по процессорам», очередь
действует по принципу FIFO. Таким образом, Процессор 0 первым
обработает Блок 0, после него Блок 6, а затем Блок 12.

• Флаг блока определяет выполняется ли обработка блока


процессором в текущем такте. Флаг принимает одно из двух значений – True
или False. В данном случае, Процессор 0 выполняет обработку Блока 0 на
Такте 1, поскольку у Блока 0 установлен флаг True. У Блоков 6, 12 установлен
флаг False, поэтому они остаются в очереди на обработку.

• Параметры процессора Вход и Выход определяют связи текущего


процессора с прочими процессорами для приёма или отправки сообщений
на следующем такте, после обработки текущего блока. В данном случае, при
обработке Блока 0 Процессор 0 не будет ни принимать, ни отправлять
сообщений.

• Входной буфер сообщений содержит очередь сообщений,


полученных процессором в текущем такте. В данном случае, входной буфер
сообщений Процессора 0 пуст.

• Выходная очередь используется для пересылки транзитных


сообщений, не предназначенных для обработки на текущем процессоре.

12
Аналогичным образом описываются состояния прочих процессоров на
всех тактах системы.

Очередь сообщений содержит сообщения, которые должны быть


переданы на следующем такте. Содержимое данной записи зависит от числа
тактов, которые требуются для пересылки сообщений между процессорами.

4. Время выполнения

Число тактов, затраченных на выполнение алгоритма, равно 17.

По третьему закону Амдала ускорение системы не может превзойти


обратной величины доли последовательных вычислений. Доля
последовательных вычислений определяется, как отношение количества
последовательных вычислений к общему количеству операций, значит,
максимальное ускорение не может превзойти величины: 16/5 = 3,2.

На практике ускорение составляет 1,82. Причиной отклонения


ускорения от максимального значения может служить то, что на некоторых
тактах некоторые процессоры простаивали, ожидая входные сообщения,
которые проходили через другие процессоры. Возможным вариантом
устранения этой проблемы могло бы стать изменение распределения блоков
по процессорам в целях устранения времени простоя процессоров.

Предложенный программой алгоритм можно улучшить, если поменять


блоки , например если поменять блоки 4 и 7 местами, то есть блок 4 был в
процессоре 4 станет в процессоре 1, а блок 7 был в процессоре 1 станет в
процессоре 4. Это позволит уменьшить пересылки, так как блок 4 связан с
блоком 1(который обрабатывается на процессоре 1), и пересылка из
процессора 4 в процессор 1 стоит три такта(1-3-2-4) и блок 4 связан с блоком
0(который обрабатывается на процессоре 0),а также с блоком 9(который
обрабатывается на процессоре 3) пересылка уменьшится на два такта.

13
Сравнение характеристик системы для разных топологий
Рассмотрим выполнение алгоритма при одном такте на пересылку. Время
выполнения на одном процессоре – 31.

Таблица 5 - Время выполнения алгоритма для топологий «Полный граф»,


«Общая шина», «Линейный массив» и «Кольцо».
Количество «Полный «Общая «Линейный
«Кольцо»
процессоров граф» шина» массив»

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

Таблица 6 - Стоимость для топологий «Полный граф», «Общая шина»,


«Линейный массив» и «Кольцо».
Количество «Полный «Общая «Линейный
«Кольцо»
процессоров граф» шина» массив»

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

Таблица 7. Характеристики топологии «Решетка» многопроцессорных


систем
Количество Расшифровка Время Стоимость
14
процессоров

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. Характеристики топологии «Гиперкуб» многопроцессорных


систем
Количество
Расшифровка Время Стоимость
процессоров,

8 (2х2х2) 16 12
12 (2х3х2) 17 20
18 (2х3х3) 18 33
27 (3х3х3) 23 54

Сравнивая характеристики разных алгоритмов, можно прийти к


выводу, что использование топологий “Решетка” и “Гиперкуб” не выгодно с
точки зрения ускорения и эффективности .
Несмотря на свою стоимость, лучшая характеристики ускорения при
реализации параллелизма у топологии “Полный граф”. Лучшее время
достигается на шести процессорах (11 тактов), стоимость при этом
достаточно большая(стоимость равна 15).
Уменьшая стоимость, можно также выбрать топологию “Полный
граф”(либо “Кольцо”,что по сути тоже самое для трех процессоров) для трех
процессоров (13 тактов),стоимость при этом равна 3(меньше 15 в 5 раз).

15
Выводы
В результате проведения данной работы была исследован
вычислительный процесс определенной функции при помощи топологии
«Решетка» многопроцессорных вычислительных систем. Был разработан
алгоритм для вычисления функции по вариантам. Были рассмотрены его
характеристики для топологии «Решетка» для различного числа процессоров,
тактов на пересылку. Был проанализирован журнал выполнения алгоритма
для варианта с лучшим ускорением при одном такте на пересылку и 6х
процессорах. Были рассчитаны эффективность и ускорение параллельного
алгоритма, приведен пример улучшения исходного алгоритма. Было
произведено сравнение топологий для данного алгоритма, учитывая время
выполнения алгоритма и стоимость топологии. Было установлено, что
лучшими системами для выполнения заданного алгоритма являются
«Полный граф» 3х процессорах.

16

Вам также может понравиться