50 lines
4.1 KiB
Markdown
50 lines
4.1 KiB
Markdown
# Лабораторная работа №6 ПИбд-42 Артамоновой Татьяны
|
||
|
||
## Цель работы
|
||
|
||
Разработать и сравнить эффективность последовательного и
|
||
параллельного алгоритмов вычисления определителя квадратной матрицы.
|
||
|
||
## Методика
|
||
|
||
Для вычисления определителя использовался рекурсивный алгоритм, основанный
|
||
на разложении по первой строке. Параллельная версия алгоритма реализована
|
||
с помощью библиотеки multiprocessing, разделяя вычисление алгебраических
|
||
дополнений между несколькими процессами. Время выполнения каждого алгоритма
|
||
замерялось для матриц различных размеров (100x100, 300x300, 500x500).
|
||
Эксперименты проводились с различным количеством потоков (1, 2, 4).
|
||
|
||
## Результаты
|
||
|
||
Результаты бенчмарка представлены на изображении:
|
||
[Фото](images/result.png)
|
||
|
||
## Анализ результатов
|
||
|
||
Результаты демонстрируют неоднозначную эффективность параллельного подхода.
|
||
Для матрицы 100x100 параллельные версии работают медленнее, чем последовательная.
|
||
Это объясняется значительными накладными расходами на создание и синхронизацию
|
||
процессов, которые преобладают над выигрышем от распараллеливания для небольших
|
||
задач.
|
||
|
||
Для матриц 300x300 и 500x500 наблюдается неожиданное поведение: параллельные
|
||
версии работают значительно медленнее, чем последовательная. Это указывает на
|
||
наличие проблем в реализации параллельного алгоритма. Скорее всего, проблема
|
||
связана с неэффективным использованием multiprocessing и значительными накладными
|
||
расходами на межпроцессное взаимодействие, которые перевешивают выигрыш от
|
||
распараллеливания. Рекурсивный алгоритм вычисления детерминанта плохо
|
||
масштабируется при распараллеливании, так как большая часть времени тратится
|
||
на рекурсивные вызовы, которые не могут быть эффективно распределены между
|
||
процессами.
|
||
|
||
## Выводы
|
||
|
||
Полученные результаты показывают, что для выбранного рекурсивного
|
||
алгоритма и способа распараллеливания, параллельная реализация не эффективна.
|
||
Для эффективного использования параллельных вычислений необходимы более
|
||
подходящие алгоритмы вычисления определителя, например, алгоритмы, основанные
|
||
на LU-разложении, а также более тщательная оптимизация распараллеливания с
|
||
учетом накладных расходов. В данном случае, последовательный алгоритм оказался
|
||
быстрее для всех размеров матриц, кроме 100х100, где разница незначительна.
|
||
|
||
### [Видео](https://vk.com/video212084908_456239363) |