27 lines
2.4 KiB
Markdown
27 lines
2.4 KiB
Markdown
# Лабораторная работа №3
|
||
## ПИбд-42 Машкова Маргарита
|
||
## Задание
|
||
Требуется сделать два алгоритма: обычный и параллельный (задание со * - реализовать это в рамках одного алгоритма).
|
||
В параллельном алгоритме предусмотреть ручное задание количества потоков (число потоков = 1 как раз и реализует задание
|
||
со *), каждый из которых будет выполнять умножение элементов матрицы в рамках своей зоны ответственности.
|
||
|
||
## Запуск программы
|
||
Запустить файл `Main`
|
||
|
||
## Описание работы программы
|
||
В методе `main` вызывается метод `run`, для которого в качестве параметра передается размер квадратной матрицы `n`.
|
||
Создается пул потоков `executorService` с использованием `Executors.newFixedThreadPool`, где количество потоков равно
|
||
количеству доступных процессоров.
|
||
Генирируются две матрицы `a` и `b` заданного размера `n`. Вызываются соответсвующие методы вычисления произведения матриц
|
||
и измеряется время. Результаты выполнения выводятся в консоль.
|
||
|
||
## Тесты
|
||
![Вывод в консоли](console.png)
|
||
|
||
### Выводы
|
||
По оценки времени выполнения можно сделать вывод, что параллельный алгоритм позволяет ускорять процесс на больших размерах
|
||
матриц. Для маленьких матриц лучше использовать обычный алгоритм. Для размера матрицы 100*100 быстрее выполнился обычный
|
||
алгоритм. При последующем увеличении размера матрицы параллельный алгоритм позволяет ускорить вычислительный процесс.
|
||
|
||
Ссылка на видео:
|
||
https://youtu.be/Vy6kO2mA8Fs |