.. | ||
img.png | ||
main.py | ||
readme.md |
Лабораторная работа №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 ускорения почти нет, чаще всего происходит такое, что при увеличении потоков - увеличивается время умножения. Это связано с тем, что система тратит время и ресурсы на создание и управление потоками. Для малых задач эти накладные расходы могут превышать преимущества, получаемые от параллельной обработки.
Видео
Работоспособность представлена на видео.