From 672cc9e867046b434bac0ac38d336ff52c965b77 Mon Sep 17 00:00:00 2001 From: the Date: Mon, 11 Nov 2024 12:42:11 +0400 Subject: [PATCH] lab 6 --- bogdanov_dmitry_lab_6/MatrixDet/main.py | 103 ++++++++++++++++++++++++ bogdanov_dmitry_lab_6/README.md | 18 +++++ bogdanov_dmitry_lab_6/images/1.png | Bin 0 -> 52793 bytes 3 files changed, 121 insertions(+) create mode 100644 bogdanov_dmitry_lab_6/MatrixDet/main.py create mode 100644 bogdanov_dmitry_lab_6/README.md create mode 100644 bogdanov_dmitry_lab_6/images/1.png diff --git a/bogdanov_dmitry_lab_6/MatrixDet/main.py b/bogdanov_dmitry_lab_6/MatrixDet/main.py new file mode 100644 index 0000000..a528c30 --- /dev/null +++ b/bogdanov_dmitry_lab_6/MatrixDet/main.py @@ -0,0 +1,103 @@ +import random as rnd +import threading +import time +import concurrent.futures +from copy import deepcopy + +def generateSquareMatrix(size): + return [[rnd.randint(0, 100) for i in range(size)] for j in range(size)] + +def printMatrix(matrix): + for row in matrix: + print(*row, sep="\t") + +testmatrix = generateSquareMatrix(500) + +def process_row(args): + i, j, m, n = args + + factor = m[j][i] / m[i][i] + + for k in range(i, n): + m[j][k] -= factor * m[i][k] + + return m[j] + + +def parallel_det(matrix, threadss): + n = len(matrix) + + m = deepcopy(matrix) + + det_value = 1 + + def process_row(i, j): + factor = m[j][i] / m[i][i] + for k in range(i, n): + m[j][k] -= factor * m[i][k] + + for i in range(n): + if m[i][i] == 0: + for j in range(i + 1, n): + if m[j][i] != 0: + m[i], m[j] = m[j], m[i] + + det_value *= -1 + + break + else: + return 0 + + with concurrent.futures.ThreadPoolExecutor(max_workers=threadss) as executor: + futures = [ + executor.submit(process_row, i, j) for j in range(i + 1, n) + ] + concurrent.futures.wait(futures) + + det_value *= m[i][i] + + return det_value + + +def det(matrix): + n = len(matrix) + m = [row[:] for row in matrix] + det_value = 1 + + for i in range(n): + if m[i][i] == 0: + for j in range(i + 1, n): + if m[j][i] != 0: + m[i], m[j] = m[j], m[i] + + det_value *= -1 + + break + else: + return 0 + + for j in range(i + 1, n): + factor = m[j][i] / m[i][i] + + for k in range(i, n): + m[j][k] -= factor * m[i][k] + + det_value *= m[i][i] + + return det_value + + +if __name__ == "__main__": + + sizes = [100, 300, 500] + num_threads = [1, 5, 8, 12] + + for size in sizes: + matrix1 = generateSquareMatrix(size) + for threads in num_threads: + start_time = time.time() + parallel_det(matrix1, threads) + end_time = time.time() + print(f"Parallel size {size}, {threads} thread(s): {end_time - start_time}s") + + print("-" * 100) \ No newline at end of file diff --git a/bogdanov_dmitry_lab_6/README.md b/bogdanov_dmitry_lab_6/README.md new file mode 100644 index 0000000..1fc8b88 --- /dev/null +++ b/bogdanov_dmitry_lab_6/README.md @@ -0,0 +1,18 @@ +# Богданов Дмитрий ПИбд-42 +# Лабораторная работа №6 + + +## Функционал: + - Были созданы методы генерации и отображения матриц заданного размера + - Былы созданы методы для параллельного вычисления детерминанта с использованием concurrent.futures + - Был написан код для бенчмаркинга стандартного и параллельного вычислений (стандартное вычисление - вычисление в одном единственном потоке) + +## Результаты выполнения: + +![изображение 1](./images/1.png) + +### Вывод: +Подобно прошлой лабораторной, параллельное вычисление определителя может принести выигрыш только на очень больших матрицах, в то время как на остальных больше времени тратится на управление потоками. + + +## [Видео](https://drive.google.com/file/d/1T2xtHROQ34iXZTG_ue6ahV5G-e9GzuaD/view?usp=sharing) \ No newline at end of file diff --git a/bogdanov_dmitry_lab_6/images/1.png b/bogdanov_dmitry_lab_6/images/1.png new file mode 100644 index 0000000000000000000000000000000000000000..a649cc535fed1f03445d4316374fe8cef4c949d1 GIT binary patch literal 52793 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 Lo@$ATZNz^8hR7zz literal 0 HcmV?d00001