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