From 92d9ff9f3010436c2c41499c339966b6c341fbf5 Mon Sep 17 00:00:00 2001 From: sodaler Date: Sun, 21 Jan 2024 21:44:11 +0400 Subject: [PATCH] degtyarev_mikhail_lab_5 is ready --- degtyarev_mikhail_lab_5/README.md | 81 ++++++++++++++++++++++ degtyarev_mikhail_lab_5/main.py | 69 ++++++++++++++++++ degtyarev_mikhail_lab_5/screens/img.png | Bin 0 -> 19822 bytes degtyarev_mikhail_lab_5/screens/img_1.png | Bin 0 -> 19406 bytes degtyarev_mikhail_lab_5/screens/img_2.png | Bin 0 -> 20691 bytes 5 files changed, 150 insertions(+) create mode 100644 degtyarev_mikhail_lab_5/README.md create mode 100644 degtyarev_mikhail_lab_5/main.py create mode 100644 degtyarev_mikhail_lab_5/screens/img.png create mode 100644 degtyarev_mikhail_lab_5/screens/img_1.png create mode 100644 degtyarev_mikhail_lab_5/screens/img_2.png diff --git a/degtyarev_mikhail_lab_5/README.md b/degtyarev_mikhail_lab_5/README.md new file mode 100644 index 0000000..8cea24b --- /dev/null +++ b/degtyarev_mikhail_lab_5/README.md @@ -0,0 +1,81 @@ +# Лабораторная 5 +## Вариант 9 + +## Задание +Кратко: реализовать умножение двух больших квадратных матриц. + +Подробно: в лабораторной работе требуется сделать два алгоритма: обычный и параллельный. В параллельном алгоритме предусмотреть ручное задание количества потоков, каждый из которых будет выполнять умножение элементов матрицы в рамках своей зоны ответственности. + +## Описание Программы + +### Алгоритмы: + +**Последовательный** + +``` +def sequential_matrix_multiply(matrix_a, matrix_b): + result = np.zeros((len(matrix_a), len(matrix_b[0]))) + for i in range(len(matrix_a)): + for j in range(len(matrix_b[0])): + for k in range(len(matrix_b)): + result[i][j] += matrix_a[i][k] * matrix_b[k][j] + return result +``` + +**Параллельный** + +``` +def parallel_matrix_multiply_worker(args): + matrix_a, matrix_b, row_start, row_end, result = args + local_result = np.zeros((row_end - row_start, len(matrix_b[0]))) + for i in range(row_start, row_end): + for j in range(len(matrix_b[0])): + for k in range(len(matrix_b)): + local_result[i - row_start][j] += matrix_a[i][k] * matrix_b[k][j] + result.extend(local_result) + + +def parallel_matrix_multiply(matrix_a, matrix_b, num_processes=2): + num_rows_a = len(matrix_a) + chunk_size = num_rows_a // num_processes + processes = [] + manager = multiprocessing.Manager() + result = manager.list() + + for i in range(num_processes): + row_start = i * chunk_size + row_end = (i + 1) * chunk_size if i < num_processes - 1 else num_rows_a + process_args = (matrix_a, matrix_b, row_start, row_end, result) + process = multiprocessing.Process(target=parallel_matrix_multiply_worker, args=(process_args,)) + processes.append(process) + + for process in processes: + process.start() + + for process in processes: + process.join() + + return np.vstack(result) +``` + +## Результат: + +Для матриц каждой размерности (100x100, 300x300, 500x500) с разными потоками были выполнены замеры по времени: + +**100x100 2, 4 потока** + +![](screens/img.png) + +**300x300 2, 4 потока** + +![](screens/img_1.png) + +**500x500 2, 4 потока** + +![](screens/img_2.png) + +Из приведенных выше тестов, можно сделать вывод, что матрица размерностью 100x100 выполняется быстрее последовательно. +Матрица 300x300 выполняется быстрее последовательно, если 2 потока, если 4 потока - то быстрее параллельно. +Матрица 500x500 выполняется быстрее с 2, 4 потоками. + +Ссылка на видео: https://vk.com/video151119348_456239202?list=ln-Zzcz0lPuhOW9ZAUZhK \ No newline at end of file diff --git a/degtyarev_mikhail_lab_5/main.py b/degtyarev_mikhail_lab_5/main.py new file mode 100644 index 0000000..547208c --- /dev/null +++ b/degtyarev_mikhail_lab_5/main.py @@ -0,0 +1,69 @@ +import numpy as np +import time +import multiprocessing + +def sequential_matrix_multiply(matrix_a, matrix_b): + result = np.zeros((len(matrix_a), len(matrix_b[0]))) + for i in range(len(matrix_a)): + for j in range(len(matrix_b[0])): + for k in range(len(matrix_b)): + result[i][j] += matrix_a[i][k] * matrix_b[k][j] + return result + + +def parallel_matrix_multiply_worker(args): + matrix_a, matrix_b, row_start, row_end, result = args + local_result = np.zeros((row_end - row_start, len(matrix_b[0]))) + for i in range(row_start, row_end): + for j in range(len(matrix_b[0])): + for k in range(len(matrix_b)): + local_result[i - row_start][j] += matrix_a[i][k] * matrix_b[k][j] + result.extend(local_result) + + +def parallel_matrix_multiply(matrix_a, matrix_b, num_processes=2): + num_rows_a = len(matrix_a) + chunk_size = num_rows_a // num_processes + processes = [] + manager = multiprocessing.Manager() + result = manager.list() + + for i in range(num_processes): + row_start = i * chunk_size + row_end = (i + 1) * chunk_size if i < num_processes - 1 else num_rows_a + process_args = (matrix_a, matrix_b, row_start, row_end, result) + process = multiprocessing.Process(target=parallel_matrix_multiply_worker, args=(process_args,)) + processes.append(process) + + for process in processes: + process.start() + + for process in processes: + process.join() + + return np.vstack(result) + + +def run_test(matrix_size, num_processes=2): + matrix_a = np.random.rand(matrix_size, matrix_size) + matrix_b = np.random.rand(matrix_size, matrix_size) + + start_time = time.time() + sequential_matrix_multiply(matrix_a, matrix_b) + sequential_time = time.time() - start_time + print(f"Время последовательного: ({matrix_size}x{matrix_size}): {sequential_time} с.") + + start_time = time.time() + parallel_matrix_multiply(matrix_a, matrix_b, num_processes) + parallel_time = time.time() - start_time + print( + f"Время параллельного умножения матриц ({matrix_size}x{matrix_size}) с {num_processes} потоками заняло: {parallel_time} с.") + print("========================================") + +if __name__ == '__main__': + run_test(100, num_processes=2) + run_test(100, num_processes=4) + run_test(300, num_processes=2) + run_test(300, num_processes=4) + run_test(500, num_processes=2) + run_test(500, num_processes=4) \ No newline at end of file diff --git a/degtyarev_mikhail_lab_5/screens/img.png b/degtyarev_mikhail_lab_5/screens/img.png new file mode 100644 index 0000000000000000000000000000000000000000..d8857fbdef91fd0f9e322bce30994ecf62c89b12 GIT binary patch literal 19822 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