25 lines
2.5 KiB
Markdown
25 lines
2.5 KiB
Markdown
|
# Лабораторная работа 5
|
|||
|
В рамках этой работы проверяется скорость расчета умножения двух матриц в некоторое количество потоков
|
|||
|
## Описание
|
|||
|
Основной принцип умножения матриц: строки умножаются на столбцы, таким образом получаются элементы. Для распараллеливания этого процесса вычисление некоторых объектов матрицы выносят в отдельные потоки, которые работают параллельно
|
|||
|
|
|||
|
## Запуск
|
|||
|
Для проверки гипотезы и реализации параллельного умножения в консоли на языке c# был реализован тестовый контур: для каждого вида матриц (100*100, 300*300 и 500*500) запускался процесс вычисления произведения в количестве потоков от 1 до 5 с использованием SsemaphoreSlim, который контролировал выполнение в заданном количестве потоков. Для каждого вычисления засекалось время в миллисекундах.
|
|||
|
## Результаты
|
|||
|
Что мы получили
|
|||
|
<br/>
|
|||
|
![Результаты вычислений 1](image.png)
|
|||
|
<br/>
|
|||
|
Результаты спорные, так как при повышении количества потоков нельзя сказать, что повышается скорость вычислений. Это связано с тем, что работа с потоками сама по сбе требует ресурсов и времени.
|
|||
|
Повысим количестов потоков до 10:
|
|||
|
<br/>
|
|||
|
![Результаты вычислений 2](image-1.png)
|
|||
|
<br/>
|
|||
|
Для небольшой матрицы видна разница в сравнении с прошлым результатом, но не так сильно, как для больших. Повышение количества потоков позволило существенно сократить время вычислений
|
|||
|
|
|||
|
## Видеодемонстрация
|
|||
|
Видедемонстрация по [адресу](https://drive.google.com/file/d/1YaQTg8OM5sVT6q4hkJvopGHFy-SM_Zjn/view?usp=sharing)
|
|||
|
|
|||
|
|
|||
|
|