DAS_2024_1/bondarenko_max_lab_5/README.md

39 lines
2.8 KiB
Markdown
Raw Normal View History

2024-12-14 01:13:43 +04:00
# Лабораторная работа 5 - Вспоминаем математику или параллельное перемножение матриц
2024-12-13 23:51:05 +04:00
### ПИбд-42 || Бондаренко Максим
# Описание работы
2024-12-14 01:13:43 +04:00
## Задание
2024-12-13 23:51:05 +04:00
> [!NOTE]
> Кратко: реализовать умножение двух больших квадратных матриц.
>
> Подробно: в лабораторной работе требуется сделать два алгоритма: обычный и параллельный (задание со * - реализовать это в рамках одного алгоритма). В параллельном алгоритме предусмотреть ручное задание количества потоков (число потоков = 1 как раз и реализует задание со *), каждый из которых будет выполнять умножение элементов матрицы в рамках своей зоны ответственности.
## Краткое описание модулей и их работа
2024-12-14 01:13:43 +04:00
1. matrix.operations.js
2024-12-13 23:52:37 +04:00
multiplyMatricesSequential(A, B):
- Перебирает элементы матриц и вычисляет их произведение, заполняя результирующую матрицу.
multiplyMatricesParallel(A, B, numThreads):
- Делит работу между потоками, каждый из которых умножает часть матриц. Запускает воркеры и собирает их результаты.
2. benchmark.js
generateMatrix(size):
- Создает матрицу с случайными значениями заданного размера.
benchmark():
- Вызывает generateMatrix для создания матриц, затем измеряет время выполнения multiplyMatricesSequential и multiplyMatricesParallel с различными параметрами, выводит результаты.
2024-12-14 01:13:43 +04:00
3. matrix.worker.js
2024-12-13 23:52:37 +04:00
multiplyPartial(A, B, start, end):
- Воркеры выполняют умножение только для части матриц, определенной параметрами start и end, и возвращают частичные результаты через parentPort.
2024-12-13 23:51:05 +04:00
## Запуск
```
node benchmark.js
```
## Результат работы
> [!IMPORTANT]
> ![benchmark.png](./benchmark.png)
>
> В отчете отражены времена выполнения для каждого из подходов, что позволяет оценить, как число потоков влияет на скорость вычислений для матриц разного размера.
Ссылка на видео: https://cloud.mail.ru/public/rEGy/HaBwrm7t8