# Лабораторная работа №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