23 lines
2.6 KiB
Markdown
23 lines
2.6 KiB
Markdown
# Лабораторная работа №5
|
||
|
||
## Описание
|
||
Код реализует умножение квадратных матриц с использованием последовательного и параллельного подхода на основе библиотек numpy и multiprocessing.
|
||
|
||
Функция matrix_multiply(A, B) - выполняет умножение матриц
|
||
|
||
Функция worker(A, B, C, row_indices) - умножение матриц для определенного диапазона
|
||
|
||
Функция parallel_matrix_multiply(A, B, num_processes) - делит строки матрицы между процессами и создает процессы для выполнения функции worker, которая обрабатывает каждую партию строк
|
||
|
||
Функция benchmark(matrix_size, num_processes) - генерирует матрицы и выполняет параллельное умножение, вычисляя затраченное время.
|
||
|
||
## Вывод работы
|
||
Этот код позволяет сравнивать производительность обычного и параллельного умножения матриц для разных размеров. Он помогает понять, как использование многопоточности может ускорить выполнение ресурсоемких операций, таких как умножение больших матриц.
|
||
По получившемуся времени, можно заметить, что параллельное умножение больше подходит для больших матриц, чем для маленьких. Заметно большое уменьшение времени при параллельном вычислении в больших матрицах. В матрице 100*100 ускорения почти нет, чаще всего происходит такое, что при увеличении потоков - увеличивается время умножения.
|
||
Это связано с тем, что система тратит время и ресурсы на создание и управление потоками.
|
||
Для малых задач эти накладные расходы могут превышать преимущества, получаемые от параллельной обработки.
|
||
|
||
![img.png](img.png)
|
||
|
||
## Видео
|
||
Работоспособность представлена на [видео](https://vk.com/video204968285_456240929). |