From f014d4ccc68c74645684b68cb669adb63dcfebf4 Mon Sep 17 00:00:00 2001 From: allllen4a Date: Mon, 13 Oct 2025 16:15:21 +0400 Subject: [PATCH] zhirnova_alyona_lab_5 --- zhirnova_alyona_lab_5/README.md | 29 ++++++++++ zhirnova_alyona_lab_5/matrix_multiply.py | 69 +++++++++++++++++++++++ zhirnova_alyona_lab_5/screenshots/5.png | Bin 0 -> 51370 bytes 3 files changed, 98 insertions(+) create mode 100644 zhirnova_alyona_lab_5/README.md create mode 100644 zhirnova_alyona_lab_5/matrix_multiply.py create mode 100644 zhirnova_alyona_lab_5/screenshots/5.png diff --git a/zhirnova_alyona_lab_5/README.md b/zhirnova_alyona_lab_5/README.md new file mode 100644 index 0000000..06ea100 --- /dev/null +++ b/zhirnova_alyona_lab_5/README.md @@ -0,0 +1,29 @@ +# Лабораторная работа №5 - Работа с брокером сообщений + +### Задачи +1. Кратко: реализовать умножение двух больших квадратных матриц. +2. Подробно: сделать два алгоритма: обычный и параллельный (задание со * - реализовать это в рамках одного алгоритма). В параллельном алгоритме предусмотреть ручное задание количества потоков (число потоков = 1 как раз и реализует задание со *), каждый из которых будет выполнять умножение элементов матрицы в рамках своей зоны ответственности. + +## Скриншот работы программы: +![1.png](screenshots/1.png) + +## Описание программы: +1. Программа умножает две большие матрицы и сравнивает скорость работы двух методов: +* Обычный метод - работает в одном процессе +* Параллельный метод - распределяет работу между несколькими процессами +2. Запускает benchmark для квадратных матриц размером 100, 300 и 500. + +## Запуск: +1. Скачайте папку с репозитория +2. Запустите с помощью команды: +`python matrix_multiply.py` +3. Ознакомьтесь с результатом работы программы + +## Что делает данная лабораторная работа: +Программа реализует умножение больших квадратных матриц двумя способами: последовательным алгоритмом и параллельным алгоритмом с использованием многопроцессорности. Программа включает функционал для benchmarking производительности на матрицах различных размеров. + +## Вывод +Программа демонстрирует эффективность параллельных вычислений для задач с большой вычислительной сложностью, показывая как размер задачи влияет на эффективность распараллеливания. + +## Видео: +https://rutube.ru/video/private/8d58707b8ad7b09a214ebfb9a889394c/?p=HhCOysJT6AyC83xhdZ49pQ \ No newline at end of file diff --git a/zhirnova_alyona_lab_5/matrix_multiply.py b/zhirnova_alyona_lab_5/matrix_multiply.py new file mode 100644 index 0000000..bf7b8cd --- /dev/null +++ b/zhirnova_alyona_lab_5/matrix_multiply.py @@ -0,0 +1,69 @@ +import multiprocessing as mp +import time +import random + +def matrix_multiply_sequential(A, B): + n = len(A) + C = [[0] * n for _ in range(n)] + for i in range(n): + for k in range(n): + for j in range(n): + C[i][j] += A[i][k] * B[k][j] + return C + +def multiply_chunk(args): + start, end, A, B = args + n = len(B) + C_part = [[0] * n for _ in range(end - start)] + for i in range(start, end): + for k in range(n): + for j in range(n): + C_part[i - start][j] += A[i][k] * B[k][j] + return (start, end, C_part) + +def matrix_multiply_parallel(A, B, processes=1): + n = len(A) + if processes == 1: + return matrix_multiply_sequential(A, B) + + chunk_size = n // processes + chunks = [] + for i in range(processes): + start = i * chunk_size + end = n if i == processes - 1 else (i + 1) * chunk_size + chunks.append((start, end, A, B)) + + with mp.Pool(processes=processes) as pool: + results = pool.map(multiply_chunk, chunks) + + C = [[0] * n for _ in range(n)] + for start, end, C_part in results: + for i in range(start, end): + C[i] = C_part[i - start] + return C + +def generate_matrix(n): + return [[random.randint(1, 100) for _ in range(n)] for _ in range(n)] + +if __name__ == '__main__': + sizes = [100, 300, 500] + processes_list = [1, 2, 4, 8] + + for size in sizes: + A = generate_matrix(size) + B = generate_matrix(size) + print(f"\nРазмер матрицы: {size}x{size}") + + # Последовательная версия + start_time = time.time() + matrix_multiply_sequential(A, B) + seq_time = time.time() - start_time + print(f"Последовательный алгоритм: {seq_time:.4f} сек") + + # Параллельные версии + for processes in processes_list: + start_time = time.time() + matrix_multiply_parallel(A, B, processes) + par_time = time.time() - start_time + speedup = seq_time / par_time + print(f"Параллельный (процессы: {processes}): {par_time:.4f} сек (ускорение: {speedup:.2f}x)") \ No newline at end of file diff --git a/zhirnova_alyona_lab_5/screenshots/5.png b/zhirnova_alyona_lab_5/screenshots/5.png new file mode 100644 index 0000000000000000000000000000000000000000..4ccd9710b56a7666ac52e3f6a1c42a7288fb67c5 GIT binary patch literal 51370 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 Jn9jrJ{{;$vU1tCQ literal 0 HcmV?d00001