DAS_2024_1/fadeeva_nastya_lab_5/README.md
2024-12-15 01:24:02 +04:00

33 lines
2.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Лабораторная работа №5 - Параллельное умножение матриц
## Задание
Требуется реализовать умножение двух больших квадратных матриц.
Надо сделать два алгоритма: обычный и параллельный. В параллельном алгоритме предусмотреть ручное задание количества потоков, каждый из которых будет выполнять умножение элементов матрицы в рамках своей зоны ответственности.
## Описание работы
Функция **benchmark** выполняет бенчмарк для матриц заданного размера.
Генерируются две матрицы **matrix1** и **matrix2** заданного размера.
После вызываются соответствующие методы для вычисления произведения матриц:
+ **multiply_matrices** - для обычного умножения
+ **multiply_matrices_parallel** - для параллельного умножения
Прописываем бенчмарк (**benchmark**) для сравнения производительности, где генерируется две случайные матрицы заданного размера с помощью **random** и измеряется время выполнения каждого из методов с использованием функции **time.time()**. Функция **benchmark** вызывается трижды с различными размерами матриц (100x100, 300x300 и 500x500).
### Результат работы программы
![](RVIP_lab_5.png "")
## Вывод
Параллельный подход может быть более эффективным, чем последовательный, при работе с большими матрицами, поскольку он позволяет выполнять операции параллельно.
Это имеет смысл использовать при работе с крупными матрицами, где выигрыш от параллельных вычислений компенсирует затраты на управление потоками.
Однако для небольших матриц может быть более эффективным использовать обычное выполнение.
# Видеозапись работы програмы
https://vkvideo.ru/video186826232_456239556