DAS_2024_1/kosheev_maksim_lab_6/READMY.md

82 lines
6.9 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.

# Лабораторная работа №5 - Параллельное вычисление детерминант матриц
## Задание
В данной лабораторной работе было необходимо реализовать вычисление детерминанта квадратной матрицы двумя способами:
1. Последовательное вычисление.
2. Параллельное вычисление с возможностью задания количества потоков.
Основная цель — изучить эффект параллельных вычислений и оценить прирост производительности при увеличении количества потоков.
## Запуск
Для запуска алгоритма вычисления детерминанта потребуется Python и модуль `multiprocessing`.
Запуск теста производительности:
```
python main.py
```
## Результаты
Ниже представлены результаты бенчмарков для различных размеров матриц и разного количества потоков:
| Размер матрицы | Потоки | Время (последовательное) | Время (параллельное) | Ускорение |
|----------------|--------|--------------------------|-----------------------|-----------|
| **100x100** | 1 | 0.0100 s | 0.1957 s | 0.05 |
| | 2 | 0.0100 s | 0.1805 s | 0.06 |
| | 4 | 0.0100 s | 0.2080 s | 0.05 |
| | 6 | 0.0100 s | 0.3015 s | 0.03 |
| | 8 | 0.0100 s | 0.2370 s | 0.04 |
| | 12 | 0.0100 s | 0.2850 s | 0.04 |
| | 16 | 0.0100 s | 0.3188 s | 0.03 |
| Размер матрицы | Потоки | Время (последовательное) | Время (параллельное) | Ускорение |
|----------------|--------|--------------------------|-----------------------|-----------|
| **300x300** | 1 | 0.0970 s | 0.2766 s | 0.35 |
| | 2 | 0.0970 s | 0.2570 s | 0.38 |
| | 4 | 0.0970 s | 0.2360 s | 0.41 |
| | 6 | 0.0970 s | 0.2856 s | 0.34 |
| | 8 | 0.0970 s | 0.3120 s | 0.31 |
| | 12 | 0.0970 s | 0.3692 s | 0.26 |
| | 16 | 0.0970 s | 0.5351 s | 0.18 |
| Размер матрицы | Потоки | Время (последовательное) | Время (параллельное) | Ускорение |
|----------------|--------|--------------------------|-----------------------|-----------|
| **500x500** | 1 | 0.3000 s | 0.5301 s | 0.57 |
| | 2 | 0.3000 s | 0.3850 s | 0.78 |
| | 4 | 0.3000 s | 0.3512 s | 0.85 |
| | 6 | 0.3000 s | 0.3000 s | 1.00 |
| | 8 | 0.3000 s | 0.3300 s | 0.91 |
| | 12 | 0.3000 s | 0.3979 s | 0.75 |
| | 16 | 0.3000 s | 0.4740 s | 0.63 |
| Размер матрицы | Потоки | Время (последовательное) | Время (параллельное) | Ускорение |
|----------------|--------|--------------------------|-----------------------|-----------|
| **1000x1000** | 1 | 1.1871 s | 1.3527 s | 0.88 |
| | 2 | 1.1871 s | 1.1602 s | 1.02 |
| | 4 | 1.1871 s | 0.7971 s | 1.49 |
| | 6 | 1.1871 s | 0.6782 s | 1.75 |
| | 8 | 1.1871 s | 0.6263 s | 1.90 |
| | 12 | 1.1871 s | 0.6636 s | 1.79 |
| | 16 | 1.1871 s | 0.7715 s | 1.54 |
| Размер матрицы | Потоки | Время (последовательное) | Время (параллельное) | Ускорение |
|----------------|--------|--------------------------|-----------------------|-----------|
| **1200x1200** | 1 | 1.7012 s | 1.8796 s | 0.91 |
| | 2 | 1.7012 s | 1.5037 s | 1.13 |
| | 4 | 1.7012 s | 1.0827 s | 1.57 |
| | 6 | 1.7012 s | 0.8606 s | 1.98 |
| | 8 | 1.7012 s | 0.8093 s | 2.10 |
| | 12 | 1.7012 s | 0.8072 s | 2.11 |
| | 16 | 1.7012 s | 0.9291 s | 1.80 |
## Выводы
Из результатов видно, что ускорение при использовании параллельного алгоритма зависит от размера матрицы и количества потоков:
- Для небольших матриц (например, 100x100) параллельный алгоритм не даёт значительного ускорения из-за накладных расходов на создание потоков.
- Для больших матриц (например, 1000x1000 и 1200x1200) параллельный алгоритм даёт существенное ускорение, достигая оптимальных значений при использовании 812 потоков.
- Увеличение количества потоков сверх количества ядер процессора не улучшает производительность и даже может её снижать из-за накладных расходов на управление потоками.
Таким образом, для эффективного параллельного вычисления детерминанта матриц важно учитывать размер данных и правильно подбирать количество потоков.
## [Видео](https://disk.yandex.ru/i/Tov7E9dy7Kt5vA)