DAS_2024_1/bondarenko_max_lab_6/README.md

34 lines
2.5 KiB
Markdown
Raw Normal View History

2024-12-14 01:03:28 +04:00
# Лабораторная работа 6 - Определение детерминанта матрицы с помощью параллельных вычислений
### ПИбд-42 || Бондаренко Максим
# Описание работы
## Задание
> [!NOTE]
> Кратко: реализовать нахождение детерминанта квадратной матрицы.
>
> Подробно: в лабораторной работе требуется сделать два алгоритма: обычный и параллельный (задание со * - реализовать это в рамках одного алгоритма). В параллельном алгоритме предусмотреть ручное задание количества потоков (число потоков = 1 как раз и реализует задание со *), каждый из которых будет выполнять нахождение отдельной группы множителей.
## Краткое описание модулей и их работа
1. matrix.operations.js
- getMinor(matrix, row, col): Получает минор матрицы для заданной строки и столбца.
- determinant(matrix): Вычисляет детерминант матрицы рекурсивно (последовательный алгоритм).
- determinantParallel(matrix, numThreads): Вычисляет детерминант матрицы параллельно, распределяя задачи по заданному количеству потоков.
2. det.worker.js
- Получает данные о своей части работы (миноры и знаки) и вычисляет частичный детерминант, который затем отправляет обратно главному потоку.
3. benchmark.js
- generateMatrix(size): Генерирует случайную квадратную матрицу заданного размера.
- benchmark(): Выполняет бенчмарки для матриц различных размеров, сравнивая время выполнения последовательного и параллельного алгоритмов с различным количеством потоков.
## Запуск
```
node benchmark.js
```
## Результат работы
> [!IMPORTANT]
> ![benchmark.png](./benchmark.png)
Ссылка на видео: https://cloud.mail.ru/public/9Bky/mjwK7bqBL