DAS_2023_1/basharin_sevastyan_lab_6/README.md

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