.. | ||
main | ||
README.md |
Лабораторная работа 5
Описание
Задание заключается в реализации алгоритмов умножения больших квадратных матриц. Необходимо разработать два алгоритма: последовательный и параллельный. А также провести бенчмарки, а затем описать результаты в отчете.
100x100 матрица:
- 4 потока — наилучший результат.
- 10 потоков — медленнее на почти в половину.
- 6 и 8 потоков — хуже 4 потоков.
- 1 и 2 потока — значительно медленнее.
300x300 матрица:
- 4 потока — лучший результат.
- 8 потоков — чуть хуже.
- 10 потоков — медленнее.
- 1 и 2 потока — значительно медленнее.
500x500 матрица:
- 8 потоков — лучший результат.
- 6 и 10 потоков — немного хуже.
- 4 потока — значительно медленнее.
- 1 поток — самый медленный.
Ссылка на демонстрацию работы программы: https://vk.com/video215756667_456239455?list=ln-z7zFcpvxLexJd3f8ss
Вывод:
- Если операция сложнее, рост производительности происходит с увеличением числа потоков.
- Слишком много потоков увеличивает накладные расходы (например, 10 потоков). Это может быть связано, например, с:
- Переключением контекстов: Когда потоков больше, чем ядер процессора, операционная система часто переключает контексты, что занимает время.
- Конкуренцией за ресурсы: Много потоков конкурируют за ограниченные ресурсы, такие как процессорное время и кэш.
- Управлением потоками: С увеличением числа потоков растёт нагрузка на систему, связанную с их созданием, управлением и завершением.