2.7 KiB
Лабораторная работа №5 - Параллельное умножение матриц
Задание
Требуется реализовать умножение двух больших квадратных матриц. Надо сделать два алгоритма: обычный и параллельный. В параллельном алгоритме предусмотреть ручное задание количества потоков, каждый из которых будет выполнять умножение элементов матрицы в рамках своей зоны ответственности.
Описание работы
Функция benchmark выполняет бенчмарк для матриц заданного размера.
Генерируются две матрицы matrix1 и matrix2 заданного размера.
После вызываются соответствующие методы для вычисления произведения матриц:
- multiply_matrices - для обычного умножения
- multiply_matrices_parallel - для параллельного умножения
Прописываем бенчмарк (benchmark) для сравнения производительности, где генерируется две случайные матрицы заданного размера с помощью random и измеряется время выполнения каждого из методов с использованием функции time.time(). Функция benchmark вызывается трижды с различными размерами матриц (100x100, 300x300 и 500x500).
Результат работы программы
Вывод
Параллельный подход может быть более эффективным, чем последовательный, при работе с большими матрицами, поскольку он позволяет выполнять операции параллельно. Это имеет смысл использовать при работе с крупными матрицами, где выигрыш от параллельных вычислений компенсирует затраты на управление потоками. Однако для небольших матриц может быть более эффективным использовать обычное выполнение.