DAS_2024_1/mochalov_danila_lab_5
2024-11-06 02:56:57 +04:00
..
main.py mochalov_danila_lab_5_is_ready 2024-11-06 02:56:57 +04:00
readme.md mochalov_danila_lab_5_is_ready 2024-11-06 02:56:57 +04:00

Лабораторная работа №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. Дальнейшее увеличение количества процессов может привести к снижению производительности из-за увеличения накладных расходов на межпроцессное взаимодействие.

Демонстрация

Доступна по ссылке