DAS_2024_1/bondarenko_max_lab_6/README.md

34 lines
2.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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