Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
делать №5.doc
Скачиваний:
2
Добавлен:
15.11.2019
Размер:
654.85 Кб
Скачать

Лабораторна робота №1 Тема: «Імітація процесу розпаралелювання обчислення суми, добутку, матриць та знаходження коефіцієнтів характеристичного поліному»

Мета роботи: ознайомитися з основними принципами створення паралельних алгоритмів на прикладі обчислення суми, добутку, матриць та знаходження коефіцієнтів характеристичного поліному

Задача

Задано матриці (22) А, В, D. Скласти блок-схеми і програму алгоритму розпаралелювання суми та добутку матриць А і В, а також обчислення коефіцієнтів характеристичного поліному матриці D. Алгоритм і програму складати за умови, що є від 3 до 12 процесорів згідно варіанту (див. таблицю 1.1). Розрахувати ширину, висоту, ефектив­ність та прискорення паралельного алгоритму.

Таблиця 1.1 – Варіанти завдання

№ варіанту

Кількість процесорів

1

3

2

4

3

5

4

6

5

7

6

8

7

9

8

10

9

11

10

12

Концепція необмеженого паралелізму

В основі цієї концепції явно або не явно лежить припущення про те, що алгоритм реалізується на паралельній обчислювальній системі, що не накладає на нього ніяких інших обмежень, окрім числа використовуваних процесів. Наприклад, нехтується структура пам'яті системи, способи доступу пам'яті, час доступу пам'яті. В цих умовах об'єктами для дослідження паралельних властивостей алгоритму стають кількість необхідних для його реалізації процесів і висота алгоритму. Невраховування структури пам'яті, способів і часу доступу є недоліком. Розглянемо приклад на якому видно вказані недоліки.

Приклад:

H ехай необхідно обчислити добуток 2 матриць:

При використанні 8 процесорів можна отримати наступну структуру, наведену на рис.1.1.

У цій схемі виникають конфлікти в пам'яті: тут можна виявити одночасне звернення до пам'яті принаймні двох процесорів, є одночасне звернення до одного й того ж вічка (наприклад до вічка а11 одночасно звертається 1-й та 3-й процесор). Вважається що звернення до пам'яті може займати більше часу, ніж виконання операцій. В даному випадку при зверненні до одного вічка двох CPU необхідно вирішити питання про пріоритет, який пов’язаний з обробкою переривань. Таким чином, одні й ті ж дані надійдуть в різні процесори неодночасно, тому дана структурна схема розпа­ралелювання, строго кажучи, не забезпечує синхрону роботу всіх процесорів в ярусі навіть якщо вони виконують одну й ту ж операцію.

Р исунок 1.1 – Схема розпаралелення з конфліктами в пам’яті

Для усунення цього недоліку необхідно спробувати виключити черги в пам'яті (виключити конфлікти). Для цього можна скористатися наступним алгоритмом:

Крок 1. Розглянути перший ярус.

Крок 2. Вибрати будь-яке звернення до пам'яті, наприклад 1-го процесора до вічка змінної b11.

Крок 3. Шукати звернення до тієї ж змінної інших процесорів в тому ж ярусі (в даному випадку процесора № 5).

Крок 4. Всі процесори окрім вибраного (в даному випадку першого), який звертається до тієї ж змінної в тому ж ярусі виключити (в даному випадку процесор №5). Виключити також всі звернення до пам'яті цих процесорів.

Крок 5. Повторюємо процес щодо інших звернень до пам'яті. Виключаючи також процесори 3-6. Таким чином, в розглянутому прикладі можна залишити процесори №1,2,7,8, оскільки конфліктів більше немає. Процесори 3-6 в цьому ярусі будуть не задіяні, а операції, які вони виконували в першому ярусі, необхідно перенести в другий ярус. Процесори, які були виключені з першого ярусу, між собою не конфліктують в результаті кількість ярусів збільшиться. Перевагою нової схеми є відсутність конфліктів пам'яті, а недоліком наявність в кожному ярусі незадіяних процесорів. Для оптимізації паралельної роботи процесори, що звільнилися, можна використо­вувати для вирішення іншого завдання, при цьому треба стежити, щоб не виникало нових конфліктів в пам'яті. Паралельна структура, отримана після усунення конфліктів, має вигляд, показаний на рисунку 1.2.

У цій структурі у кожному ярусі є незадіяні процесори, які можуть бути використані для вирішення інших задач. У якості таких задач розглянемо задачу додавання розглянутих двох матриць та обчислення коефіцієнтів характеристичного поліному матриці D розмірністю 22.

Додавання матриць, як відомо, відбувається наступним чином:

К оефіцієнти характеристичного поліному визначаються за формулою:

Рисунок 1.2 – Схема множення матриць після усунення конфліктів у пам'яті

Для скорочення виразів введемо позначення:

k1=d11+d22; k2=d11d22d12d21.

Результатом є структурна схема розпаралелення, наведена на рисунку 1.3. Лише три процесори (два у першому та один у третьому ярусах) незадіяні.

Рисунок 1.3 – Паралельна структура вирішення трьох задач одночасно без конфліктів у пам'яті