34 lines
2.5 KiB
Markdown
34 lines
2.5 KiB
Markdown
# Лабораторная работа 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 |