From 8848c0b9cc50528825c25ee587740f1829433c61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D1=80=D1=82=D1=91=D0=BC=20=D0=90=D0=BB=D0=B5=D0=B9?= =?UTF-8?q?=D0=BA=D0=B8=D0=BD?= Date: Wed, 20 Nov 2024 16:28:34 +0400 Subject: [PATCH] aleikin_artem_lab_6 is ready --- .../DerminantMatrix/DerminantMatrix.csproj | 10 ++ .../DerminantMatrix/DerminantMatrix.sln | 25 ++++ .../DerminantMatrix/Program.cs | 118 ++++++++++++++++++ aleikin_artem_lab_6/Images/Отчет1.png | Bin 0 -> 106946 bytes aleikin_artem_lab_6/readme.md | 95 ++++++++++++++ 5 files changed, 248 insertions(+) create mode 100644 aleikin_artem_lab_6/DerminantMatrix/DerminantMatrix.csproj create mode 100644 aleikin_artem_lab_6/DerminantMatrix/DerminantMatrix.sln create mode 100644 aleikin_artem_lab_6/DerminantMatrix/Program.cs create mode 100644 aleikin_artem_lab_6/Images/Отчет1.png create mode 100644 aleikin_artem_lab_6/readme.md diff --git a/aleikin_artem_lab_6/DerminantMatrix/DerminantMatrix.csproj b/aleikin_artem_lab_6/DerminantMatrix/DerminantMatrix.csproj new file mode 100644 index 0000000..2150e37 --- /dev/null +++ b/aleikin_artem_lab_6/DerminantMatrix/DerminantMatrix.csproj @@ -0,0 +1,10 @@ + + + + Exe + net8.0 + enable + enable + + + diff --git a/aleikin_artem_lab_6/DerminantMatrix/DerminantMatrix.sln b/aleikin_artem_lab_6/DerminantMatrix/DerminantMatrix.sln new file mode 100644 index 0000000..05dbea5 --- /dev/null +++ b/aleikin_artem_lab_6/DerminantMatrix/DerminantMatrix.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.11.35312.102 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DerminantMatrix", "DerminantMatrix.csproj", "{40E2A332-5A1C-46A7-AFA9-833E4922AD08}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {40E2A332-5A1C-46A7-AFA9-833E4922AD08}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {40E2A332-5A1C-46A7-AFA9-833E4922AD08}.Debug|Any CPU.Build.0 = Debug|Any CPU + {40E2A332-5A1C-46A7-AFA9-833E4922AD08}.Release|Any CPU.ActiveCfg = Release|Any CPU + {40E2A332-5A1C-46A7-AFA9-833E4922AD08}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {DF40653A-B248-4AC9-8203-1F8E8EA9423F} + EndGlobalSection +EndGlobal diff --git a/aleikin_artem_lab_6/DerminantMatrix/Program.cs b/aleikin_artem_lab_6/DerminantMatrix/Program.cs new file mode 100644 index 0000000..ad9388f --- /dev/null +++ b/aleikin_artem_lab_6/DerminantMatrix/Program.cs @@ -0,0 +1,118 @@ +using System; +using System.Diagnostics; +using System.Threading.Tasks; + +class Program +{ + static void Main(string[] args) + { + int[] sizes = { 10, 11, 12 }; + + int maxThreads = 20; + + foreach (var size in sizes) + { + Console.WriteLine($"\nРазмер матрицы: {size}x{size}"); + + // Генерация матрицы + var matrix = GenerateMatrix(size); + + // Последовательное нахождение детерминанта + var stopwatch = Stopwatch.StartNew(); + var detSequential = DeterminantSequential(matrix); + stopwatch.Stop(); + long timeSequential = stopwatch.ElapsedMilliseconds; + Console.WriteLine($"Последовательное вычисление: {timeSequential} мс, детерминант = {detSequential}"); + + // Параллельное нахождение детерминанта + Console.WriteLine("Параллельное вычисление (время выполнения для каждого количества потоков):"); + for (int threads = 1; threads <= maxThreads; threads++) + { + stopwatch.Restart(); + var detParallel = DeterminantParallel(matrix, threads); + stopwatch.Stop(); + long timeParallel = stopwatch.ElapsedMilliseconds; + Console.WriteLine($"Потоков: {threads} — {timeParallel} мс"); + } + } + } + + // Генерация квадратной матрицы размером size x size + static double[,] GenerateMatrix(int size) + { + var random = new Random(); + var matrix = new double[size, size]; + for (int i = 0; i < size; i++) + for (int j = 0; j < size; j++) + matrix[i, j] = random.Next(-10, 10); + return matrix; + } + + // Последовательное вычисление детерминанта + static double DeterminantSequential(double[,] matrix) + { + int size = matrix.GetLength(0); + if (size == 1) + return matrix[0, 0]; + + if (size == 2) + return matrix[0, 0] * matrix[1, 1] - matrix[0, 1] * matrix[1, 0]; + + double determinant = 0; + for (int col = 0; col < size; col++) + { + determinant += Math.Pow(-1, col) * matrix[0, col] * DeterminantSequential(Minor(matrix, 0, col)); + } + return determinant; + } + + // Параллельное вычисление детерминанта + static double DeterminantParallel(double[,] matrix, int threadCount) + { + int size = matrix.GetLength(0); + if (size == 1) + return matrix[0, 0]; + + if (size == 2) + return matrix[0, 0] * matrix[1, 1] - matrix[0, 1] * matrix[1, 0]; + + double determinant = 0; + object lockObject = new object(); + + Parallel.For(0, size, new ParallelOptions { MaxDegreeOfParallelism = threadCount }, col => + { + double minorDeterminant = DeterminantSequential(Minor(matrix, 0, col)); + double term = Math.Pow(-1, col) * matrix[0, col] * minorDeterminant; + + lock (lockObject) + { + determinant += term; + } + }); + + return determinant; + } + + // Создание минора для матрицы + static double[,] Minor(double[,] matrix, int row, int col) + { + int size = matrix.GetLength(0); + var minor = new double[size - 1, size - 1]; + + for (int i = 0, minorRow = 0; i < size; i++) + { + if (i == row) continue; + + for (int j = 0, minorCol = 0; j < size; j++) + { + if (j == col) continue; + + minor[minorRow, minorCol] = matrix[i, j]; + minorCol++; + } + minorRow++; + } + + return minor; + } +} diff --git a/aleikin_artem_lab_6/Images/Отчет1.png b/aleikin_artem_lab_6/Images/Отчет1.png new file mode 100644 index 0000000000000000000000000000000000000000..fd387bcb70275c69d7a4b9527b0b0a779c6663dd GIT binary patch literal 106946 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 Q2L2sAeDY8x*7Vx{03TcOssI20 literal 0 HcmV?d00001 diff --git a/aleikin_artem_lab_6/readme.md b/aleikin_artem_lab_6/readme.md new file mode 100644 index 0000000..853d244 --- /dev/null +++ b/aleikin_artem_lab_6/readme.md @@ -0,0 +1,95 @@ +# Лабораторная работа 6 - Параллельный поиск значения детерминанта матрицы +## ПИбд-42 || Алейкин Артем + +### Описание +В данной лабораторной работе мы занимались написанием многопоточного вычислителя детерминанта больших матриц. + +### Объяснения +Последовательный алгоритм: +Нахождение детерминанта реализовано рекурсивно через формулу разложения по строке матрицы. +Метод DeterminantSequential вычисляет детерминант через разложение по первой строке и вызов минора. + +``` +static double DeterminantSequential(double[,] matrix) +{ + int size = matrix.GetLength(0); + if (size == 1) + return matrix[0, 0]; + + if (size == 2) + return matrix[0, 0] * matrix[1, 1] - matrix[0, 1] * matrix[1, 0]; + + double determinant = 0; + for (int col = 0; col < size; col++) + { + determinant += Math.Pow(-1, col) * matrix[0, col] * DeterminantSequential(Minor(matrix, 0, col)); + } + return determinant; +} +``` + +Параллельный алгоритм: +Каждую итерацию разложения по строке матрицы можно выполнять в отдельном потоке. +DeterminantParallel использует Parallel.For для запуска потоков. + +``` +static double DeterminantParallel(double[,] matrix, int threadCount) +{ + int size = matrix.GetLength(0); + if (size == 1) + return matrix[0, 0]; + + if (size == 2) + return matrix[0, 0] * matrix[1, 1] - matrix[0, 1] * matrix[1, 0]; + + double determinant = 0; + object lockObject = new object(); + + Parallel.For(0, size, new ParallelOptions { MaxDegreeOfParallelism = threadCount }, col => + { + double minorDeterminant = DeterminantSequential(Minor(matrix, 0, col)); + double term = Math.Pow(-1, col) * matrix[0, col] * minorDeterminant; + + lock (lockObject) + { + determinant += term; + } + }); + + return determinant; +} +``` + +Миноры: +Метод Minor создает подматрицу, исключая заданные строку и столбец. + +``` +static double[,] Minor(double[,] matrix, int row, int col) +{ + int size = matrix.GetLength(0); + var minor = new double[size - 1, size - 1]; + + for (int i = 0, minorRow = 0; i < size; i++) + { + if (i == row) continue; + + for (int j = 0, minorCol = 0; j < size; j++) + { + if (j == col) continue; + + minor[minorRow, minorCol] = matrix[i, j]; + minorCol++; + } + minorRow++; + } + + return minor; +} +``` + +В результате мы получаем следующие значения: +![Вычисление детерминанта матриц](./Images/Отчет1.png) + +Результаты аналогичны с предыдущей лабораторной работой, многопоточный подход позволяет кратно выигрывать время, но и ресурсы на организацию работы всех потоков тоже существенны. + +Видео демонстрации работы: https://vk.com/video248424990_456239613?list=ln-tyTv9vKdAOzQyPm5Y3 \ No newline at end of file