# Отчет. Лабораторная работа 5

## Описание
В рамках лабораторной работы была реализована программа, которая производит умножение матриц с применением последовательного и паралелльного алгоритма.
При этом последовательный алгоритм достигается с помощью выделения одного потока на выполнение. 

При указании одного потока подзадачи по умножению матриц полностью выполняются одним потоком. В качестве подзадачи было 
выбрано нахождение строки результирующей матрицы.

По условию задания необходимо было замерить результаты выполнения алгоритмов на квадратных матрицах размерами 100x100, 
300x300, 500x500. На всех прогонах можно увидеть, что последовательное выполнение умножения матриц происходит медленнее 
в несколько раз медленее. При этом чем больше потоков выделяется для выполнения подзадач, тем быстрее выполняется 
алгоритм параллельного умножения.

Результаты представлены на следующих изображениях:
![100](images/100x100.PNG)
![300](images/300x300.PNG)
![500](images/500x500.PNG)

## Как запустить
Необходимо иметь установленную JDK 21. Можно воспользоваться встроенным в нее компилятором (javac), а затем запустить исполняемый файл (java)
или запускать из среды разработки.
При запуске нужно указать аргументы командной строки: 
1. размер матриц (integer) 
2. режим отладки (boolean) - позволяет выводить в консоль исходные матрицы и промежуточные результаты работы 

## Видео-отчет
Работоспособность лабораторной работы можно оценить в следующем [видео](https://disk.yandex.ru/i/ZafQV9CGjBIKIw). 
Запуск происходил через IDEA с различными конфигурациями запуска (отличался размер умножаемых матриц и параметр отладки), 
чтобы увидеть результаты выполнения на матрицах всех размеров, необходимых по условию задачи.