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

Звіт повинен містити:

  1. Тему, мету та завдання роботи.

  2. Схему алгоритму розпаралелення.

  3. Блок-схему програми.

  4. Листинг програми.

  5. Порядок виконання роботи з описом усіх дій.

4

3

2

1

A

1 2

3 4

8

4 3

2 1

4

4

12

8

Потоки завершили виконання

3

2

9

16

Потоки завершили виконання

Потоки завершили виконання

8 5

20 25

Рисунок 3.2 – Приклад виконання програми

Контрольні питання:

  1. назвіть дві основні задачі при взаємодії процесів?

  2. В чому полягає завдання взаємного виключення при взаємодії процесів?

  3. назвіть два основних підходи до вирішення завдання взаємного виключення при взаємодії процесів?

  4. Поясніть підхід до вирішення завдання взаємного виключення, що грунтується на контролі процесів? Які програмні механізми доволяють реалізувати такий підхід?

  5. Поясніть підхід до вирішення завдання взаємного виключення, що грунтується на контролі ресурсів? Які програмні механізми доволяють реалізувати такий підхід?

  6. В чому полягає завдання синхронізації при взаємодії процесів?

  7. Які програмні механізми використовуються для синхронізації процесів?

  8. Що таке семафор: призначення, типи, особливості та галузі використання?

  9. Що таке монітор (захищений модуль): призначення, особливості та галузі використання?

  10. Що таке мютекс: призначення, особливості та галузі використання?

  11. Що таке критична секція: призначення, особливості та галузі використання?

Лабораторна робота №4 Тема: «Розпаралелювання процесу сортування масивів даних»

Мета роботи: ознайомитися з принципами розпаралелення процесу сортування масивів даних та взаємодії процесів (потоків) при виконанні цієї задачі на основі мютексів

Задача

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

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

№ варіанту

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

1

3

2

4

3

5

4

6

5

7

6

8

7

9

8

10

9

11

10

12

Схема сортування

При розпаралелюванні алгоритмів можна виділити 2 тенденції:

1. Ліквідація циклів — заміна їх паралельними процесами (накопичення суми, обробка матриць).

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

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

Проте, не всі алгоритми можна розпаралелювати, таким чином.

Розглянемо групу з 5 даних, яку необхідно відсортувати у порядку зростання, масив даних максимально не впорядкований (елементи відсортовані в протилежному порядку). Побудувати алгоритм сортування з розпаралелюванням, при кількості процесорів 2.

Для вирішення задачі необхідно використати алгоритм сортування (рисунок 4.1):

1. Звернення до пам'яті.

2. Попарне порівняння елементів масиву.

3. Формування ознак впорядковування.

4. Перестановка.

5. Звернення до пам'яті.

6. Порівняння.

7 . Формування ознак впорядкованості 2.

8. Перестановка.

Рисунок 4.1 – Схема алгоритму сортування для двох процесорів

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

В останніх 2-х стовпцях ознак впорядкованості опинилися одні одиниці, отже, масив впорядкований.

Порівняємо сортування тим же методом за допомогою однопроцесорної архітектури (рисунок 4.3).

При кількості даних рівній 5 однопроцесорна архітектура витрачає 10 кроків, а двохпроцесорна — 5 кроків. Але трьохпроцесорна архітектура кількості кроків не зменшує.

5 4 4 2 2 1 1

4 5 2 4 1 2 2

3 2 5 1 4 3 3

2 3 1 5 3 4 4

1 1 3 3 5 5 5

0 x 0 x 0 x 1

0 0 0 0 0 1 1

x 0 x 0 x 1 x

Рисунок 4.2 – Пояснення до розпаралелення алгоритму сортування для двох процесорів

5 4 4 4 4 2 2 2 2 1 1 1 1

4 5 5 2 2 4 4 1 1 2 2 2 2

3 3 2 5 5 5 1 4 4 4 3 3 3

2 2 3 3 1 1 5 5 3 3 4 4 4

1 1 1 1 3 3 3 3 5 5 5 5 5

Рисунок 4.3 – Процес сортування масиву з використанням 1 процесору

При обробці даних багатопроцесорною архітектурою на кожному подальшому кроці впорядковування, необхідно виконувати зсув при виклику даних таким чином, що б були оброблені дані які попереднім належали різним парам.

Якщо на одному з кроків виявлено, що всі пари відсортовані правильно, це не означає що правильно відсортований весь масив, потрібно циклічно пройти всі пари і лише після цього вважати, що масив відсортований правильно.

На рисунку 4.4 наведено схему розпаралелення алгоритму сортування для 40 чисел.

Рисунок 4.4 – Схема розпаралелення алгоритму сортування для 40 чисел