26 lines
2.2 KiB
Markdown
26 lines
2.2 KiB
Markdown
|
# Лабораторная работа №5 - Параллельное умножение матриц
|
|||
|
|
|||
|
## Задание
|
|||
|
|
|||
|
Требуется сделать два алгоритма: обычный и параллельный. В параллельном алгоритме предусмотреть ручное задание количества потоков, каждый из которых будет выполнять умножение элементов матрицы в рамках своей зоны ответственности.
|
|||
|
|
|||
|
### Описание работы программы
|
|||
|
|
|||
|
Метод ```benchmark``` выполняет бенчмарк для матриц заданного размера.
|
|||
|
|
|||
|
Далее генерируются две матрицы ```matrix1``` и ```matrix2``` заданного размера.
|
|||
|
|
|||
|
После этого вызываются соответствующие методы для вычисления произведения матриц: ```multiply_matrices``` для обычного умножения и ```multiply_matrices_parallel``` для параллельного умножения.
|
|||
|
|
|||
|
Измеряется время выполнения каждого из методов с использованием функции ```time.time()```.
|
|||
|
|
|||
|
### Результат работы программы
|
|||
|
|
|||
|
![](lab_5.png "")
|
|||
|
|
|||
|
### Вывод
|
|||
|
|
|||
|
Параллельный подход может быть более быстрым, чем последовательный на матрицах большого размера, так как он позволяет производить более Параллельное выполнение матричного умножения имеет смысл применять при работе с крупными матрицами, где выигрыш от параллельных вычислений компенсирует затраты на управление потоками. Для небольших матриц может быть эффективнее использовать обычное выполнение
|
|||
|
|
|||
|
# Видеозапись работы программы
|
|||
|
https://disk.yandex.ru/i/5gUyRJw0TM7-rw
|