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)
|