DAS_2023_1/basharin_sevastyan_lab_6/README.md

25 lines
2.5 KiB
Markdown
Raw Normal View History

2023-12-02 01:49:01 +04:00
## Лабораторная работа 6. Вариант 5.
### Задание
Реализовать нахождение детерминанта квадратной матрицы.
### Как запустить
В терминале ввести команду `python main.py` из директории с файлом.
### Описание работы
+ `determinant_block`: Эта функция принимает квадратный блок матрицы и вычисляет его детерминант с использованием
функции `np.linalg.det` из библиотеки **NumPy**.
+ `determinant_parallel`: Эта функция разбивает исходную матрицу на квадратные блоки, а затем
использует библиотеку `multiprocessing` для распараллеливания вычислений детерминантов блоков. Она создает пул
процессов, разбивает матрицу на блоки и передает каждый блок в пул процессов для параллельного вычисления детерминанта.
Затем результаты собираются и перемножаются для получения общего детерминанта матрицы.
+ В блоке `if __name__ == "__main__"`: создается случайная матрица заданного размера, и затем функция `determinant_parallel`
вызывается с разным числом процессов `num_processes`. Замеряется время выполнения для каждого размера матрицы и
каждого числа процессов. Также измеряется время выполнения для последовательного (однопоточного) расчета детерминанта
с использованием `determinant_block`.
### Результат работы
![](res.png "")
### Вывод
Из результатов работы видно, что написанный алгоритм не эффективен на приведенных размерах матрицы при различном
количестве потоков. Вероятнее всего на это влияет процесс разделение квадратной матрицы на меньшие блоки для вычисления.