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
|