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