.. | ||
main.py | ||
readme.md |
Лабораторная работа №2
ПИбд-42. Мочалов Данила.
Выполнение
Были реализованы два алгоритма для перемножения матриц: обычный и паралелльный. Параллельный алгоритм использует multiprocessing.Pool для разделения вычислений между несколькими процессами.
Результаты бенчмарков:
Были проведены тесты для матриц размером 100x100, 300x300 и 500x500 элементов с разным количеством процессов (1, 5, 10). Результаты представлены в таблице:
Размер матрицы | Алгоритм | Кол-во процессов | Время (сек.) |
---|---|---|---|
100x100 | Обычный | - | 0.21 |
100x100 | Параллельный | 1 | 0.59 |
100x100 | Параллельный | 5 | 0.34 |
100x100 | Параллельный | 10 | 0.32 |
300x300 | Обычный | - | 6.59 |
300x300 | Параллельный | 1 | 7.03 |
300x300 | Параллельный | 5 | 2.00 |
300x300 | Параллельный | 10 | 1.54 |
500x500 | Обычный | - | 29.81 |
500x500 | Параллельный | 1 | 33.83 |
500x500 | Параллельный | 5 | 8.57 |
500x500 | Параллельный | 10 | 5.67 |
Анализ
-
Для маленьких матриц (100x100) параллельный алгоритм с одним процессом работает медленнее последовательного. Это связано с накладными расходами на создание и управление процессом, которые превышают выигрыш от параллелизма.
-
С увеличением размера матрицы эффективность параллельного алгоритма возрастает. Для матриц 300x300 и 500x500 наблюдается значительное ускорение по сравнению с последовательным алгоритмом.
-
Количество процессов, обеспечивающее максимальное ускорение, зависит от размера матрицы и аппаратных возможностей системы. В данном случае, для матрицы 300x300 использование 10 процессов дает лучший результат, а для 500x500 - тоже 10. Дальнейшее увеличение количества процессов может привести к снижению производительности из-за увеличения накладных расходов на межпроцессное взаимодействие.