From 7205c6f8f02fd2123d2e0ece4a73a808285465a0 Mon Sep 17 00:00:00 2001 From: rita Date: Wed, 10 Jan 2024 05:21:50 +0400 Subject: [PATCH] mashkova_margarita_lab_5 ready --- mashkova_margarita_lab_5/README.md | 27 ++++++++ mashkova_margarita_lab_5/console.png | Bin 0 -> 16481 bytes mashkova_margarita_lab_5/src/Main.java | 85 +++++++++++++++++++++++++ 3 files changed, 112 insertions(+) create mode 100644 mashkova_margarita_lab_5/README.md create mode 100644 mashkova_margarita_lab_5/console.png create mode 100644 mashkova_margarita_lab_5/src/Main.java diff --git a/mashkova_margarita_lab_5/README.md b/mashkova_margarita_lab_5/README.md new file mode 100644 index 0000000..c86b0f3 --- /dev/null +++ b/mashkova_margarita_lab_5/README.md @@ -0,0 +1,27 @@ +# Лабораторная работа №3 +## ПИбд-42 Машкова Маргарита +## Задание +Требуется сделать два алгоритма: обычный и параллельный (задание со * - реализовать это в рамках одного алгоритма). +В параллельном алгоритме предусмотреть ручное задание количества потоков (число потоков = 1 как раз и реализует задание +со *), каждый из которых будет выполнять умножение элементов матрицы в рамках своей зоны ответственности. + +## Запуск программы +Запустить файл `Main` + +## Описание работы программы +В методе `main` вызывается метод `run`, для которого в качестве параметра передается размер квадратной матрицы `n`. +Создается пул потоков `executorService` с использованием `Executors.newFixedThreadPool`, где количество потоков равно +количеству доступных процессоров. +Генирируются две матрицы `a` и `b` заданного размера `n`. Вызываются соответсвующие методы вычисления произведения матриц +и измеряется время. Результаты выполнения выводятся в консоль. + +## Тесты +![Вывод в консоли](console.png) + +### Выводы +По оценки времени выполнения можно сделать вывод, что параллельный алгоритм позволяет ускорять процесс на больших размерах +матриц. Для маленьких матриц лучше использовать обычный алгоритм. Для размера матрицы 100*100 быстрее выполнился обычный +алгоритм. При последующем увеличении размера матрицы параллельный алгоритм позволяет ускорить вычислительный процесс. + +Ссылка на видео: +https://youtu.be/ApnSEO0ztqQ \ No newline at end of file diff --git a/mashkova_margarita_lab_5/console.png b/mashkova_margarita_lab_5/console.png new file mode 100644 index 0000000000000000000000000000000000000000..253ea751339dab3d153cd8af8ef6826459399145 GIT binary patch literal 16481 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 { + for (int j = 0; j < b[0].length; ++j) { + for (int k = 0; k < a[0].length; ++k) { + result[fi][j] += a[fi][k] * b[k][j]; + } + } + }); + } + executor.shutdown(); + executor.awaitTermination(1, TimeUnit.DAYS); + return result; + } + + public static void main(String[] args) throws InterruptedException { + System.out.println("Сравнение результатов\n"); + run(100); + run(300); + run(500); + } + + public static void run(int n) throws InterruptedException { + System.out.println(String.format("Размер матрицы = %d * %d", n, n)); + // Создание пула потоков (количество потоков = количеству доступных процессоров) + final ExecutorService executorService = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors()); + + final int[][] a = generateMatrix(n); + final int[][] b = generateMatrix(n); + + // Вычисление времени выполнения для обычного алгоритма + long time = System.currentTimeMillis(); + final int[][] productSync = multiplySync(a, b); + System.out.println("Время при обычном выполнении: " + (System.currentTimeMillis() - time)); + + // Вычисление времени выполнения для параллельного алгоритма + time = System.currentTimeMillis(); + final int[][] productAsync = multiplyAsync(a, b, executorService); + System.out.println("Время при синхронном выполнении: " + (System.currentTimeMillis() - time)); + System.out.println(); + } +} \ No newline at end of file