forked from Alexey/DAS_2024_1
31 lines
2.5 KiB
Markdown
31 lines
2.5 KiB
Markdown
# Лабораторная работа №5 - Параллельное умножение матриц
|
||
|
||
## Задание
|
||
|
||
|
||
* Кратко: реализовать умножение двух больших квадратных матриц.
|
||
|
||
* Подробно: в лабораторной работе требуется сделать два алгоритма: обычный и параллельный (задание со * - реализовать это в рамках одного алгоритма). В параллельном алгоритме предусмотреть ручное задание количества потоков (число потоков = 1 как раз и реализует задание со *), каждый из которых будет выполнять умножение элементов матрицы в рамках своей зоны ответственности.
|
||
|
||
## Работа программы:
|
||
|
||
1. Генерируются случайные матрицы A и B заданных размеров.
|
||
|
||
2. multiply_matrices_sequential(A, B) умножает две матрицы A и B последовательно, используя вложенные циклы для вычисления элементов результирующей матрицы C.
|
||
|
||
3. multiply_matrices_parallel(A, B, num_workers) выполняет параллельное умножение матриц с использованием пула процессов.
|
||
|
||
4. benchmark(matrix_size, num_workers) Измеряет время выполнения операций умножения. И выводит результат в консоль.
|
||
|
||
### Результат:
|
||
|
||
![](result.png "")
|
||
|
||
### Вывод:
|
||
|
||
Параллельный подход может быть более быстрым, чем последовательный на матрицах большого размера, так как он позволяет производить более эффективное распределение работы между процессами. Однако на маленьких матрицах небольшая задержка на создание и инициализацию нескольких процессов может оказаться более затратным, чем просто выполнение умножения последовательно.
|
||
|
||
|
||
# Видео
|
||
https://vk.com/video230744264_456239107?list=ln-S0qfmD3VN0JZC8Nh6o
|