
- •Хід роботи
- •Включення і настройка mpi відладника в ms vs
- •Програма 'π': паралельне інтегрування по формулі трапецій
- •Основні поняття mpi
- •Хід роботи
- •Завдання
- •Варіанти завдань
- •Хід роботи
- •Завдання
- •Контрольні питання
- •Лабораторна робота № 4 Тема. Організація паралельного множення матриць
- •Короткі теоретичні відомості
- •Хід роботи
- •Завдання
- •Контрольні запитання
- •Список літератури
Завдання
Вивчити теоретичні відомості.
Використовуючи наведений вище приклад розробити блок-схеми загальної частини і окремих паралельні блоків обробки для реалізації процесу обчислення скалярного добутку.
Написати MPI-програму обчислення скалярного добутку чотирьох довільних векторів на основі розроблених вами блок-схем.
Відповісти на контрольні питання.
Контрольні питання
Яка обчислювальна складність послідовного алгоритму скалярного множення векторів?
Чи може використання циклічної схеми розділення даних вплинути на час роботи паралельного алгоритму?
Яка топологія комунікаційної мережі є доцільною для реалізації паралельного алгоритму скалярного множення векторів?
Зміст звіту
Тема і мета лабораторної роботи.
Завдання.
Блок-схеми і програмний код.
Лабораторна робота № 4 Тема. Організація паралельного множення матриць
Мета роботи: Ознайомитися з прийомами створення параллельного програмного забезпечення. Набути навичок реалізації розроблених блок-схем розпаралелювання послідовних алгоритмів множення матриць.
Короткі теоретичні відомості
Завдання множення
матриць є базовою макрооперацією для
багатьох задач лінійної алгебри. Тому
ефективний паралельний алгоритм множення
матриць дозволяє значно збільшити
розмірність подібних задач без збільшення
часу на їх розв’язання. Нехай дано дві
матриці,
та
,
добуток яких необхідно обчислити.
Елементи результуючої матриці
обчислюються за формулою
Оцінимо час
виконання послідовного алгоритму. Нехай
– час, що витрачений на множення двох
чисел,
– час додавання двох чисел. Час, який
витрачається на обчислення одного
елемента результуючої матриці
.
В результуючій матриці міститься
елементів, тому загальний час виконання
множення матриць дорівнює
.
Позначимо
.
Звідси слідує, що
.
Розглянемо паралельний алгоритм множення матриць і оцінимо час його роботи.
Нехай маємо К
процесорів, причому
,
де Х
– ціле. Разпаралелимо обчислення так,
щоб кожен процесор обчислював
елементів результуючої матриці. Тоді
сумарний час виконання можна оцінити
наступним чином:
.
Позначимо
.
Порівнюючи
та
,
отримаємо:
.
Час, що витрачається на множення матриць
за допомогою паралельного алгоритму,
в K
разів менше, ніж при використанні
послідовного.
Розглянемо один
із способів розпаралелювання алгоритму.
Пронумеруємо елементи матриці результату
за наступним правилом (нумерація
елементів, а також рядків та стовпчиків
починається з нуля):
.
Обчислення розподілимо так, щоб перший процесор обчислював перші елементи матриці результату, другий – наступні и т. д.. Таким чином, кінцева та ліва вихідна матриця отримуються розподіленими горизонтальними смугами, а права вихідна матриця – вертикальними смугами.
Рисунок 4.1 – Схема розподілення робіт при паралельному множенні матриць
Розглянемо випадок,
коли
(кількість процесорів більша, ніж
елементів в матриці результату). Незадіяні
процесори можна використовувати для
прискорення обчислення окремих елементів
матриці результату. При цьому використовуємо
спосіб розпаралелювання, подібний до
того, що використовувався при обчисленні
скалярного добутку векторів
.