diff --git a/almukhammetov_bulat_lab_5/MatrixMultiplication/.vs/MatrixMultiplication/DesignTimeBuild/.dtbcache.v2 b/almukhammetov_bulat_lab_5/MatrixMultiplication/.vs/MatrixMultiplication/DesignTimeBuild/.dtbcache.v2 new file mode 100644 index 0000000..6ff3a68 Binary files /dev/null and b/almukhammetov_bulat_lab_5/MatrixMultiplication/.vs/MatrixMultiplication/DesignTimeBuild/.dtbcache.v2 differ diff --git a/almukhammetov_bulat_lab_5/MatrixMultiplication/.vs/MatrixMultiplication/FileContentIndex/5a5ee08d-b143-4a9c-a419-b66966e579c0.vsidx b/almukhammetov_bulat_lab_5/MatrixMultiplication/.vs/MatrixMultiplication/FileContentIndex/5a5ee08d-b143-4a9c-a419-b66966e579c0.vsidx new file mode 100644 index 0000000..1f0d838 Binary files /dev/null and b/almukhammetov_bulat_lab_5/MatrixMultiplication/.vs/MatrixMultiplication/FileContentIndex/5a5ee08d-b143-4a9c-a419-b66966e579c0.vsidx differ diff --git a/almukhammetov_bulat_lab_5/MatrixMultiplication/.vs/MatrixMultiplication/FileContentIndex/8e0ba479-e194-41b8-a3b3-1a755ceffbd7.vsidx b/almukhammetov_bulat_lab_5/MatrixMultiplication/.vs/MatrixMultiplication/FileContentIndex/8e0ba479-e194-41b8-a3b3-1a755ceffbd7.vsidx new file mode 100644 index 0000000..c0a62fc Binary files /dev/null and b/almukhammetov_bulat_lab_5/MatrixMultiplication/.vs/MatrixMultiplication/FileContentIndex/8e0ba479-e194-41b8-a3b3-1a755ceffbd7.vsidx differ diff --git a/almukhammetov_bulat_lab_5/MatrixMultiplication/.vs/MatrixMultiplication/v17/.futdcache.v2 b/almukhammetov_bulat_lab_5/MatrixMultiplication/.vs/MatrixMultiplication/v17/.futdcache.v2 new file mode 100644 index 0000000..1b6bb97 Binary files /dev/null and b/almukhammetov_bulat_lab_5/MatrixMultiplication/.vs/MatrixMultiplication/v17/.futdcache.v2 differ diff --git a/almukhammetov_bulat_lab_5/MatrixMultiplication/.vs/MatrixMultiplication/v17/.suo b/almukhammetov_bulat_lab_5/MatrixMultiplication/.vs/MatrixMultiplication/v17/.suo new file mode 100644 index 0000000..d42eb7d Binary files /dev/null and b/almukhammetov_bulat_lab_5/MatrixMultiplication/.vs/MatrixMultiplication/v17/.suo differ diff --git a/almukhammetov_bulat_lab_5/MatrixMultiplication/.vs/ProjectEvaluation/matrixmultiplication.metadata.v7.bin b/almukhammetov_bulat_lab_5/MatrixMultiplication/.vs/ProjectEvaluation/matrixmultiplication.metadata.v7.bin new file mode 100644 index 0000000..246e9be Binary files /dev/null and b/almukhammetov_bulat_lab_5/MatrixMultiplication/.vs/ProjectEvaluation/matrixmultiplication.metadata.v7.bin differ diff --git a/almukhammetov_bulat_lab_5/MatrixMultiplication/.vs/ProjectEvaluation/matrixmultiplication.projects.v7.bin b/almukhammetov_bulat_lab_5/MatrixMultiplication/.vs/ProjectEvaluation/matrixmultiplication.projects.v7.bin new file mode 100644 index 0000000..cb48c5c Binary files /dev/null and b/almukhammetov_bulat_lab_5/MatrixMultiplication/.vs/ProjectEvaluation/matrixmultiplication.projects.v7.bin differ diff --git a/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication.sln b/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication.sln new file mode 100644 index 0000000..938a3f6 --- /dev/null +++ b/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.8.34330.188 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MatrixMultiplication", "MatrixMultiplication\MatrixMultiplication.csproj", "{133AAF5F-5559-4289-AF92-D6F78F952774}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {133AAF5F-5559-4289-AF92-D6F78F952774}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {133AAF5F-5559-4289-AF92-D6F78F952774}.Debug|Any CPU.Build.0 = Debug|Any CPU + {133AAF5F-5559-4289-AF92-D6F78F952774}.Release|Any CPU.ActiveCfg = Release|Any CPU + {133AAF5F-5559-4289-AF92-D6F78F952774}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {41DCCA96-3173-4B1F-895C-1ABE37B2B606} + EndGlobalSection +EndGlobal diff --git a/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication/MatrixMultiplication.csproj b/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication/MatrixMultiplication.csproj new file mode 100644 index 0000000..ffe4e8b --- /dev/null +++ b/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication/MatrixMultiplication.csproj @@ -0,0 +1,14 @@ + + + + Exe + net8.0 + enable + enable + + + + + + + diff --git a/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication/Program.cs b/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication/Program.cs new file mode 100644 index 0000000..80aab69 --- /dev/null +++ b/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication/Program.cs @@ -0,0 +1,243 @@ +using System.Diagnostics; +using MathNet.Numerics.LinearAlgebra; + +class Program +{ + static void Main() + { + Console.WriteLine("Введите количество потоков:"); + string input = Console.ReadLine(); + + + if (!int.TryParse(input, out int threadCount)) + { + Console.WriteLine("Введено некорректное значение, будет использовано значение по умолчанию: 4"); + threadCount = 4; + } + + // Генерация матриц + int[,] matrixA100 = GenerateMatrix(100, 100); + int[,] matrixB100 = GenerateMatrix(100, 100); + + int[,] matrixA300 = GenerateMatrix(300, 300); + int[,] matrixB300 = GenerateMatrix(300, 300); + + int[,] matrixA500 = GenerateMatrix(500, 500); + int[,] matrixB500 = GenerateMatrix(500, 500); + + // Счетчики для расчета среднего + long totalTimeSeq100 = 0, totalTimePar100 = 0; + long totalTimeSeq300 = 0, totalTimePar300 = 0; + long totalTimeSeq500 = 0, totalTimePar500 = 0; + long totalMemorySeq100 = 0, totalMemoryPar100 = 0; + long totalMemorySeq300 = 0, totalMemoryPar300 = 0; + long totalMemorySeq500 = 0, totalMemoryPar500 = 0; + + int iterations = 10; + + for (int i = 0; i < iterations; i++) + { + Console.WriteLine($"Прогон #{i + 1}:\n"); + + // 100x100 + var (timeSeq100, memSeq100, timePar100, memPar100) = TestMatrixOperation(matrixA100, matrixB100, threadCount); + totalTimeSeq100 += timeSeq100; + totalTimePar100 += timePar100; + totalMemorySeq100 += memSeq100; + totalMemoryPar100 += memPar100; + + // 300x300 + var (timeSeq300, memSeq300, timePar300, memPar300) = TestMatrixOperation(matrixA300, matrixB300, threadCount); + totalTimeSeq300 += timeSeq300; + totalTimePar300 += timePar300; + totalMemorySeq300 += memSeq300; + totalMemoryPar300 += memPar300; + + // 500x500 + var (timeSeq500, memSeq500, timePar500, memPar500) = TestMatrixOperation(matrixA500, matrixB500, threadCount); + totalTimeSeq500 += timeSeq500; + totalTimePar500 += timePar500; + totalMemorySeq500 += memSeq500; + totalMemoryPar500 += memPar500; + } + + // Вывод средних значений + Console.WriteLine($"\nСреднее время (мс) и расход памяти (байт) для последовательного и параллельного умножения матриц:"); + + Console.WriteLine($"100x100: Последовательно: Время: {totalTimeSeq100 / iterations} мс, Память: {totalMemorySeq100 / iterations} байт"); + Console.WriteLine($"100x100: Параллельно: Время: {totalTimePar100 / iterations} мс, Память: {totalMemoryPar100 / iterations} байт"); + + Console.WriteLine($"300x300: Последовательно: Время: {totalTimeSeq300 / iterations} мс, Память: {totalMemorySeq300 / iterations} байт"); + Console.WriteLine($"300x300: Параллельно: Время: {totalTimePar300 / iterations} мс, Память: {totalMemoryPar300 / iterations} байт"); + + Console.WriteLine($"500x500: Последовательно: Время: {totalTimeSeq500 / iterations} мс, Память: {totalMemorySeq500 / iterations} байт"); + Console.WriteLine($"500x500: Параллельно: Время: {totalTimePar500 / iterations} мс, Память: {totalMemoryPar500 / iterations} байт"); + } + + /// + /// Генерация матрицы + /// + /// + /// + /// + static int[,] GenerateMatrix(int rows, int cols) + { + var random = new Random(); + int[,] matrix = new int[rows, cols]; + + for (int i = 0; i < rows; i++) + { + for (int j = 0; j < cols; j++) + { + matrix[i, j] = random.Next(100); //Гененрируем значение матриц до 100 + } + } + + return matrix; + } + + /// + /// Последовательная обработка матрицы + /// + /// + /// + /// + static int[,] MultiplyMatricesSequential(int[,] a, int[,] b) + { + int aRows = a.GetLength(0); + int aCols = a.GetLength(1); + int bCols = b.GetLength(1); + var result = new int[aRows, bCols]; + + for (int i = 0; i < aRows; i++) + { + for (int j = 0; j < bCols; j++) + { + for (int k = 0; k < aCols; k++) + { + result[i, j] += a[i, k] * b[k, j]; + } + } + } + + return result; + } + + /// + /// Параллельный обработка матрицы + /// + /// + /// + /// + /// + static int[,] MultiplyMatricesParallel(int[,] a, int[,] b, int threadCount) + { + int aRows = a.GetLength(0); + int bCols = b.GetLength(1); + var result = new int[aRows, bCols]; + + Parallel.For(0, aRows, new ParallelOptions { MaxDegreeOfParallelism = threadCount }, i => + { + for (int j = 0; j < bCols; j++) + { + int sum = 0; + for (int k = 0; k < a.GetLength(1); k++) + { + sum += a[i, k] * b[k, j]; + } + result[i, j] = sum; + } + }); + + return result; + } + + static void PrintMatrix(int[,] matrix) + { + int rows = matrix.GetLength(0); + int cols = matrix.GetLength(1); + + for (int i = 0; i < rows; i++) + { + for (int j = 0; j < cols; j++) + { + Console.Write(matrix[i, j] + "\t"); + } + Console.WriteLine(); + } + } + + /// + /// Проверка матриц на совместимость к умножениям + /// + /// + /// + /// + static bool CanMultiplyMatrices(int[,] a, int[,] b) + { + return a.GetLength(1) == b.GetLength(0); + } + + + /// + /// Для проверки корректного расчета умножения матриц + /// + /// + /// + static Matrix ConvertToMathNetMatrix(int[,] matrix) + { + int rows = matrix.GetLength(0); + int cols = matrix.GetLength(1); + var result = Matrix.Build.Dense(rows, cols); + + for (int i = 0; i < rows; i++) + { + for (int j = 0; j < cols; j++) + { + result[i, j] = matrix[i, j]; + } + } + + return result; + } + + /// + /// Подсчет времени и потребляемой памяти, высчитывание точного времени + /// + /// + /// + /// + /// + static (long, long, long, long) TestMatrixOperation(int[,] a, int[,] b, int threadCount) + { + if (!CanMultiplyMatrices(a, b)) + { + Console.WriteLine("Матрицы несовместимы для умножения."); + return (0, 0, 0, 0); + } + + Stopwatch stopwatch = new(); + + // Последовательное умножение + long memoryBeforeSeq = GC.GetTotalMemory(true); + stopwatch.Start(); + var resultSequential = MultiplyMatricesSequential(a, b); + stopwatch.Stop(); + long memoryAfterSeq = GC.GetTotalMemory(true); + long timeSeq = stopwatch.ElapsedMilliseconds; + long memoryUsedSeq = memoryAfterSeq - memoryBeforeSeq; + Console.WriteLine($"Последовательно: Время: {timeSeq} мс, Память: {memoryUsedSeq} байт"); + + // Параллельное умножение + long memoryBeforePar = GC.GetTotalMemory(true); + stopwatch.Restart(); + var resultParallel = MultiplyMatricesParallel(a, b, threadCount); + stopwatch.Stop(); + long memoryAfterPar = GC.GetTotalMemory(true); + long timePar = stopwatch.ElapsedMilliseconds; + long memoryUsedPar = memoryAfterPar - memoryBeforePar; + Console.WriteLine($"Параллельно: Время: {timePar} мс, Память: {memoryUsedPar} байт"); + + return (timeSeq, memoryUsedSeq, timePar, memoryUsedPar); + } +} diff --git a/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication/bin/Debug/net8.0/MathNet.Numerics.dll b/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication/bin/Debug/net8.0/MathNet.Numerics.dll new file mode 100644 index 0000000..3027abb Binary files /dev/null and b/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication/bin/Debug/net8.0/MathNet.Numerics.dll differ diff --git a/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication/bin/Debug/net8.0/MatrixMultiplication.deps.json b/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication/bin/Debug/net8.0/MatrixMultiplication.deps.json new file mode 100644 index 0000000..34362b9 --- /dev/null +++ b/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication/bin/Debug/net8.0/MatrixMultiplication.deps.json @@ -0,0 +1,41 @@ +{ + "runtimeTarget": { + "name": ".NETCoreApp,Version=v8.0", + "signature": "" + }, + "compilationOptions": {}, + "targets": { + ".NETCoreApp,Version=v8.0": { + "MatrixMultiplication/1.0.0": { + "dependencies": { + "MathNet.Numerics": "5.0.0" + }, + "runtime": { + "MatrixMultiplication.dll": {} + } + }, + "MathNet.Numerics/5.0.0": { + "runtime": { + "lib/net6.0/MathNet.Numerics.dll": { + "assemblyVersion": "5.0.0.0", + "fileVersion": "5.0.0.0" + } + } + } + } + }, + "libraries": { + "MatrixMultiplication/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "MathNet.Numerics/5.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-pg1W2VwaEQMAiTpGK840hZgzavnqjlCMTVSbtVCXVyT+7AX4mc1o89SPv4TBlAjhgCOo9c1Y+jZ5m3ti2YgGgA==", + "path": "mathnet.numerics/5.0.0", + "hashPath": "mathnet.numerics.5.0.0.nupkg.sha512" + } + } +} \ No newline at end of file diff --git a/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication/bin/Debug/net8.0/MatrixMultiplication.dll b/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication/bin/Debug/net8.0/MatrixMultiplication.dll new file mode 100644 index 0000000..c4accfc Binary files /dev/null and b/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication/bin/Debug/net8.0/MatrixMultiplication.dll differ diff --git a/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication/bin/Debug/net8.0/MatrixMultiplication.exe b/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication/bin/Debug/net8.0/MatrixMultiplication.exe new file mode 100644 index 0000000..da4230b Binary files /dev/null and b/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication/bin/Debug/net8.0/MatrixMultiplication.exe differ diff --git a/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication/bin/Debug/net8.0/MatrixMultiplication.pdb b/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication/bin/Debug/net8.0/MatrixMultiplication.pdb new file mode 100644 index 0000000..1cb1824 Binary files /dev/null and b/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication/bin/Debug/net8.0/MatrixMultiplication.pdb differ diff --git a/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication/bin/Debug/net8.0/MatrixMultiplication.runtimeconfig.json b/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication/bin/Debug/net8.0/MatrixMultiplication.runtimeconfig.json new file mode 100644 index 0000000..becfaea --- /dev/null +++ b/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication/bin/Debug/net8.0/MatrixMultiplication.runtimeconfig.json @@ -0,0 +1,12 @@ +{ + "runtimeOptions": { + "tfm": "net8.0", + "framework": { + "name": "Microsoft.NETCore.App", + "version": "8.0.0" + }, + "configProperties": { + "System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false + } + } +} \ No newline at end of file diff --git a/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication/obj/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs b/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication/obj/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs new file mode 100644 index 0000000..2217181 --- /dev/null +++ b/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication/obj/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")] diff --git a/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication/obj/Debug/net8.0/MatrixMultiplication.AssemblyInfo.cs b/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication/obj/Debug/net8.0/MatrixMultiplication.AssemblyInfo.cs new file mode 100644 index 0000000..39ec8ed --- /dev/null +++ b/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication/obj/Debug/net8.0/MatrixMultiplication.AssemblyInfo.cs @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------ +// +// Этот код создан программой. +// Исполняемая версия:4.0.30319.42000 +// +// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае +// повторной генерации кода. +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("MatrixMultiplication")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+a346187851ddda07b6b4d0de75645f9c8d61bee4")] +[assembly: System.Reflection.AssemblyProductAttribute("MatrixMultiplication")] +[assembly: System.Reflection.AssemblyTitleAttribute("MatrixMultiplication")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// Создано классом WriteCodeFragment MSBuild. + diff --git a/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication/obj/Debug/net8.0/MatrixMultiplication.AssemblyInfoInputs.cache b/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication/obj/Debug/net8.0/MatrixMultiplication.AssemblyInfoInputs.cache new file mode 100644 index 0000000..9c3e18d --- /dev/null +++ b/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication/obj/Debug/net8.0/MatrixMultiplication.AssemblyInfoInputs.cache @@ -0,0 +1 @@ +7a58be475266d06789e6aa68f62ed05f94075de5902763bf6799d85f69fada57 diff --git a/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication/obj/Debug/net8.0/MatrixMultiplication.GeneratedMSBuildEditorConfig.editorconfig b/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication/obj/Debug/net8.0/MatrixMultiplication.GeneratedMSBuildEditorConfig.editorconfig new file mode 100644 index 0000000..016e563 --- /dev/null +++ b/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication/obj/Debug/net8.0/MatrixMultiplication.GeneratedMSBuildEditorConfig.editorconfig @@ -0,0 +1,13 @@ +is_global = true +build_property.TargetFramework = net8.0 +build_property.TargetPlatformMinVersion = +build_property.UsingMicrosoftNETSdkWeb = +build_property.ProjectTypeGuids = +build_property.InvariantGlobalization = +build_property.PlatformNeutralAssembly = +build_property.EnforceExtendedAnalyzerRules = +build_property._SupportedPlatformList = Linux,macOS,Windows +build_property.RootNamespace = MatrixMultiplication +build_property.ProjectDir = D:\Документы\GitHub\DAS_2023_1\almukhammetov_bulat_lab_5\MatrixMultiplication\MatrixMultiplication\ +build_property.EnableComHosting = +build_property.EnableGeneratedComInterfaceComImportInterop = diff --git a/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication/obj/Debug/net8.0/MatrixMultiplication.GlobalUsings.g.cs b/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication/obj/Debug/net8.0/MatrixMultiplication.GlobalUsings.g.cs new file mode 100644 index 0000000..8578f3d --- /dev/null +++ b/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication/obj/Debug/net8.0/MatrixMultiplication.GlobalUsings.g.cs @@ -0,0 +1,8 @@ +// +global using global::System; +global using global::System.Collections.Generic; +global using global::System.IO; +global using global::System.Linq; +global using global::System.Net.Http; +global using global::System.Threading; +global using global::System.Threading.Tasks; diff --git a/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication/obj/Debug/net8.0/MatrixMultiplication.assets.cache b/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication/obj/Debug/net8.0/MatrixMultiplication.assets.cache new file mode 100644 index 0000000..a98ef7f Binary files /dev/null and b/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication/obj/Debug/net8.0/MatrixMultiplication.assets.cache differ diff --git a/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication/obj/Debug/net8.0/MatrixMultiplication.csproj.AssemblyReference.cache b/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication/obj/Debug/net8.0/MatrixMultiplication.csproj.AssemblyReference.cache new file mode 100644 index 0000000..e14c3ce Binary files /dev/null and b/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication/obj/Debug/net8.0/MatrixMultiplication.csproj.AssemblyReference.cache differ diff --git a/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication/obj/Debug/net8.0/MatrixMultiplication.csproj.BuildWithSkipAnalyzers b/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication/obj/Debug/net8.0/MatrixMultiplication.csproj.BuildWithSkipAnalyzers new file mode 100644 index 0000000..e69de29 diff --git a/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication/obj/Debug/net8.0/MatrixMultiplication.csproj.CopyComplete b/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication/obj/Debug/net8.0/MatrixMultiplication.csproj.CopyComplete new file mode 100644 index 0000000..e69de29 diff --git a/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication/obj/Debug/net8.0/MatrixMultiplication.csproj.CoreCompileInputs.cache b/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication/obj/Debug/net8.0/MatrixMultiplication.csproj.CoreCompileInputs.cache new file mode 100644 index 0000000..944725e --- /dev/null +++ b/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication/obj/Debug/net8.0/MatrixMultiplication.csproj.CoreCompileInputs.cache @@ -0,0 +1 @@ +55f04003915b62743f4a53a757a6903769d4b603d70342bb5ea26dd830ce01cf diff --git a/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication/obj/Debug/net8.0/MatrixMultiplication.csproj.FileListAbsolute.txt b/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication/obj/Debug/net8.0/MatrixMultiplication.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..fc99696 --- /dev/null +++ b/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication/obj/Debug/net8.0/MatrixMultiplication.csproj.FileListAbsolute.txt @@ -0,0 +1,34 @@ +C:\Users\73bul\source\repos\MatrixMultiplication\MatrixMultiplication\obj\Debug\net8.0\MatrixMultiplication.GeneratedMSBuildEditorConfig.editorconfig +C:\Users\73bul\source\repos\MatrixMultiplication\MatrixMultiplication\obj\Debug\net8.0\MatrixMultiplication.AssemblyInfoInputs.cache +C:\Users\73bul\source\repos\MatrixMultiplication\MatrixMultiplication\obj\Debug\net8.0\MatrixMultiplication.AssemblyInfo.cs +C:\Users\73bul\source\repos\MatrixMultiplication\MatrixMultiplication\obj\Debug\net8.0\MatrixMultiplication.csproj.CoreCompileInputs.cache +C:\Users\73bul\source\repos\MatrixMultiplication\MatrixMultiplication\bin\Debug\net8.0\MatrixMultiplication.exe +C:\Users\73bul\source\repos\MatrixMultiplication\MatrixMultiplication\bin\Debug\net8.0\MatrixMultiplication.deps.json +C:\Users\73bul\source\repos\MatrixMultiplication\MatrixMultiplication\bin\Debug\net8.0\MatrixMultiplication.runtimeconfig.json +C:\Users\73bul\source\repos\MatrixMultiplication\MatrixMultiplication\bin\Debug\net8.0\MatrixMultiplication.dll +C:\Users\73bul\source\repos\MatrixMultiplication\MatrixMultiplication\bin\Debug\net8.0\MatrixMultiplication.pdb +C:\Users\73bul\source\repos\MatrixMultiplication\MatrixMultiplication\obj\Debug\net8.0\MatrixMultiplication.dll +C:\Users\73bul\source\repos\MatrixMultiplication\MatrixMultiplication\obj\Debug\net8.0\refint\MatrixMultiplication.dll +C:\Users\73bul\source\repos\MatrixMultiplication\MatrixMultiplication\obj\Debug\net8.0\MatrixMultiplication.pdb +C:\Users\73bul\source\repos\MatrixMultiplication\MatrixMultiplication\obj\Debug\net8.0\MatrixMultiplication.genruntimeconfig.cache +C:\Users\73bul\source\repos\MatrixMultiplication\MatrixMultiplication\obj\Debug\net8.0\ref\MatrixMultiplication.dll +C:\Users\73bul\source\repos\MatrixMultiplication\MatrixMultiplication\bin\Debug\net8.0\MathNet.Numerics.dll +C:\Users\73bul\source\repos\MatrixMultiplication\MatrixMultiplication\obj\Debug\net8.0\MatrixMultiplication.csproj.AssemblyReference.cache +C:\Users\73bul\source\repos\MatrixMultiplication\MatrixMultiplication\obj\Debug\net8.0\MatrixMultiplication.csproj.CopyComplete +D:\Документы\GitHub\DAS_2023_1\almukhammetov_bulat_lab_5\MatrixMultiplication\MatrixMultiplication\bin\Debug\net8.0\MatrixMultiplication.exe +D:\Документы\GitHub\DAS_2023_1\almukhammetov_bulat_lab_5\MatrixMultiplication\MatrixMultiplication\bin\Debug\net8.0\MatrixMultiplication.deps.json +D:\Документы\GitHub\DAS_2023_1\almukhammetov_bulat_lab_5\MatrixMultiplication\MatrixMultiplication\bin\Debug\net8.0\MatrixMultiplication.runtimeconfig.json +D:\Документы\GitHub\DAS_2023_1\almukhammetov_bulat_lab_5\MatrixMultiplication\MatrixMultiplication\bin\Debug\net8.0\MatrixMultiplication.dll +D:\Документы\GitHub\DAS_2023_1\almukhammetov_bulat_lab_5\MatrixMultiplication\MatrixMultiplication\bin\Debug\net8.0\MatrixMultiplication.pdb +D:\Документы\GitHub\DAS_2023_1\almukhammetov_bulat_lab_5\MatrixMultiplication\MatrixMultiplication\bin\Debug\net8.0\MathNet.Numerics.dll +D:\Документы\GitHub\DAS_2023_1\almukhammetov_bulat_lab_5\MatrixMultiplication\MatrixMultiplication\obj\Debug\net8.0\MatrixMultiplication.csproj.AssemblyReference.cache +D:\Документы\GitHub\DAS_2023_1\almukhammetov_bulat_lab_5\MatrixMultiplication\MatrixMultiplication\obj\Debug\net8.0\MatrixMultiplication.GeneratedMSBuildEditorConfig.editorconfig +D:\Документы\GitHub\DAS_2023_1\almukhammetov_bulat_lab_5\MatrixMultiplication\MatrixMultiplication\obj\Debug\net8.0\MatrixMultiplication.AssemblyInfoInputs.cache +D:\Документы\GitHub\DAS_2023_1\almukhammetov_bulat_lab_5\MatrixMultiplication\MatrixMultiplication\obj\Debug\net8.0\MatrixMultiplication.AssemblyInfo.cs +D:\Документы\GitHub\DAS_2023_1\almukhammetov_bulat_lab_5\MatrixMultiplication\MatrixMultiplication\obj\Debug\net8.0\MatrixMultiplication.csproj.CoreCompileInputs.cache +D:\Документы\GitHub\DAS_2023_1\almukhammetov_bulat_lab_5\MatrixMultiplication\MatrixMultiplication\obj\Debug\net8.0\MatrixMultiplication.csproj.CopyComplete +D:\Документы\GitHub\DAS_2023_1\almukhammetov_bulat_lab_5\MatrixMultiplication\MatrixMultiplication\obj\Debug\net8.0\MatrixMultiplication.dll +D:\Документы\GitHub\DAS_2023_1\almukhammetov_bulat_lab_5\MatrixMultiplication\MatrixMultiplication\obj\Debug\net8.0\refint\MatrixMultiplication.dll +D:\Документы\GitHub\DAS_2023_1\almukhammetov_bulat_lab_5\MatrixMultiplication\MatrixMultiplication\obj\Debug\net8.0\MatrixMultiplication.pdb +D:\Документы\GitHub\DAS_2023_1\almukhammetov_bulat_lab_5\MatrixMultiplication\MatrixMultiplication\obj\Debug\net8.0\MatrixMultiplication.genruntimeconfig.cache +D:\Документы\GitHub\DAS_2023_1\almukhammetov_bulat_lab_5\MatrixMultiplication\MatrixMultiplication\obj\Debug\net8.0\ref\MatrixMultiplication.dll diff --git a/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication/obj/Debug/net8.0/MatrixMultiplication.dll b/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication/obj/Debug/net8.0/MatrixMultiplication.dll new file mode 100644 index 0000000..c4accfc Binary files /dev/null and b/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication/obj/Debug/net8.0/MatrixMultiplication.dll differ diff --git a/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication/obj/Debug/net8.0/MatrixMultiplication.genruntimeconfig.cache b/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication/obj/Debug/net8.0/MatrixMultiplication.genruntimeconfig.cache new file mode 100644 index 0000000..8918cd9 --- /dev/null +++ b/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication/obj/Debug/net8.0/MatrixMultiplication.genruntimeconfig.cache @@ -0,0 +1 @@ +1b7b8549cd99557405705f097a819690f07270f8854d5fd1090cfd8a6a5ed9a9 diff --git a/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication/obj/Debug/net8.0/MatrixMultiplication.pdb b/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication/obj/Debug/net8.0/MatrixMultiplication.pdb new file mode 100644 index 0000000..1cb1824 Binary files /dev/null and b/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication/obj/Debug/net8.0/MatrixMultiplication.pdb differ diff --git a/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication/obj/Debug/net8.0/apphost.exe b/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication/obj/Debug/net8.0/apphost.exe new file mode 100644 index 0000000..da4230b Binary files /dev/null and b/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication/obj/Debug/net8.0/apphost.exe differ diff --git a/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication/obj/Debug/net8.0/ref/MatrixMultiplication.dll b/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication/obj/Debug/net8.0/ref/MatrixMultiplication.dll new file mode 100644 index 0000000..c0a707b Binary files /dev/null and b/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication/obj/Debug/net8.0/ref/MatrixMultiplication.dll differ diff --git a/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication/obj/Debug/net8.0/refint/MatrixMultiplication.dll b/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication/obj/Debug/net8.0/refint/MatrixMultiplication.dll new file mode 100644 index 0000000..c0a707b Binary files /dev/null and b/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication/obj/Debug/net8.0/refint/MatrixMultiplication.dll differ diff --git a/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication/obj/MatrixMultiplication.csproj.nuget.dgspec.json b/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication/obj/MatrixMultiplication.csproj.nuget.dgspec.json new file mode 100644 index 0000000..f709256 --- /dev/null +++ b/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication/obj/MatrixMultiplication.csproj.nuget.dgspec.json @@ -0,0 +1,69 @@ +{ + "format": 1, + "restore": { + "D:\\Документы\\GitHub\\DAS_2023_1\\almukhammetov_bulat_lab_5\\MatrixMultiplication\\MatrixMultiplication\\MatrixMultiplication.csproj": {} + }, + "projects": { + "D:\\Документы\\GitHub\\DAS_2023_1\\almukhammetov_bulat_lab_5\\MatrixMultiplication\\MatrixMultiplication\\MatrixMultiplication.csproj": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "D:\\Документы\\GitHub\\DAS_2023_1\\almukhammetov_bulat_lab_5\\MatrixMultiplication\\MatrixMultiplication\\MatrixMultiplication.csproj", + "projectName": "MatrixMultiplication", + "projectPath": "D:\\Документы\\GitHub\\DAS_2023_1\\almukhammetov_bulat_lab_5\\MatrixMultiplication\\MatrixMultiplication\\MatrixMultiplication.csproj", + "packagesPath": "C:\\Users\\73bul\\.nuget\\packages\\", + "outputPath": "D:\\Документы\\GitHub\\DAS_2023_1\\almukhammetov_bulat_lab_5\\MatrixMultiplication\\MatrixMultiplication\\obj\\", + "projectStyle": "PackageReference", + "configFilePaths": [ + "C:\\Users\\73bul\\AppData\\Roaming\\NuGet\\NuGet.Config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" + ], + "originalTargetFrameworks": [ + "net8.0" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "projectReferences": {} + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + } + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "dependencies": { + "MathNet.Numerics": { + "target": "Package", + "version": "[5.0.0, )" + } + }, + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.100/PortableRuntimeIdentifierGraph.json" + } + } + } + } +} \ No newline at end of file diff --git a/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication/obj/MatrixMultiplication.csproj.nuget.g.props b/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication/obj/MatrixMultiplication.csproj.nuget.g.props new file mode 100644 index 0000000..849b9bd --- /dev/null +++ b/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication/obj/MatrixMultiplication.csproj.nuget.g.props @@ -0,0 +1,15 @@ + + + + True + NuGet + $(MSBuildThisFileDirectory)project.assets.json + $(UserProfile)\.nuget\packages\ + C:\Users\73bul\.nuget\packages\ + PackageReference + 6.8.0 + + + + + \ No newline at end of file diff --git a/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication/obj/MatrixMultiplication.csproj.nuget.g.targets b/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication/obj/MatrixMultiplication.csproj.nuget.g.targets new file mode 100644 index 0000000..3dc06ef --- /dev/null +++ b/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication/obj/MatrixMultiplication.csproj.nuget.g.targets @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication/obj/project.assets.json b/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication/obj/project.assets.json new file mode 100644 index 0000000..c774fc7 --- /dev/null +++ b/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication/obj/project.assets.json @@ -0,0 +1,113 @@ +{ + "version": 3, + "targets": { + "net8.0": { + "MathNet.Numerics/5.0.0": { + "type": "package", + "compile": { + "lib/net6.0/MathNet.Numerics.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/MathNet.Numerics.dll": { + "related": ".xml" + } + } + } + } + }, + "libraries": { + "MathNet.Numerics/5.0.0": { + "sha512": "pg1W2VwaEQMAiTpGK840hZgzavnqjlCMTVSbtVCXVyT+7AX4mc1o89SPv4TBlAjhgCOo9c1Y+jZ5m3ti2YgGgA==", + "type": "package", + "path": "mathnet.numerics/5.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "icon.png", + "lib/net461/MathNet.Numerics.dll", + "lib/net461/MathNet.Numerics.xml", + "lib/net48/MathNet.Numerics.dll", + "lib/net48/MathNet.Numerics.xml", + "lib/net5.0/MathNet.Numerics.dll", + "lib/net5.0/MathNet.Numerics.xml", + "lib/net6.0/MathNet.Numerics.dll", + "lib/net6.0/MathNet.Numerics.xml", + "lib/netstandard2.0/MathNet.Numerics.dll", + "lib/netstandard2.0/MathNet.Numerics.xml", + "mathnet.numerics.5.0.0.nupkg.sha512", + "mathnet.numerics.nuspec" + ] + } + }, + "projectFileDependencyGroups": { + "net8.0": [ + "MathNet.Numerics >= 5.0.0" + ] + }, + "packageFolders": { + "C:\\Users\\73bul\\.nuget\\packages\\": {} + }, + "project": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "D:\\Документы\\GitHub\\DAS_2023_1\\almukhammetov_bulat_lab_5\\MatrixMultiplication\\MatrixMultiplication\\MatrixMultiplication.csproj", + "projectName": "MatrixMultiplication", + "projectPath": "D:\\Документы\\GitHub\\DAS_2023_1\\almukhammetov_bulat_lab_5\\MatrixMultiplication\\MatrixMultiplication\\MatrixMultiplication.csproj", + "packagesPath": "C:\\Users\\73bul\\.nuget\\packages\\", + "outputPath": "D:\\Документы\\GitHub\\DAS_2023_1\\almukhammetov_bulat_lab_5\\MatrixMultiplication\\MatrixMultiplication\\obj\\", + "projectStyle": "PackageReference", + "configFilePaths": [ + "C:\\Users\\73bul\\AppData\\Roaming\\NuGet\\NuGet.Config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" + ], + "originalTargetFrameworks": [ + "net8.0" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "projectReferences": {} + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + } + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "dependencies": { + "MathNet.Numerics": { + "target": "Package", + "version": "[5.0.0, )" + } + }, + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.100/PortableRuntimeIdentifierGraph.json" + } + } + } +} \ No newline at end of file diff --git a/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication/obj/project.nuget.cache b/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication/obj/project.nuget.cache new file mode 100644 index 0000000..7d2ba0c --- /dev/null +++ b/almukhammetov_bulat_lab_5/MatrixMultiplication/MatrixMultiplication/obj/project.nuget.cache @@ -0,0 +1,10 @@ +{ + "version": 2, + "dgSpecHash": "MnXWhXr7C0YOLfM/M0Q/yOcncgcvGv+2fkw05RSNm31bZUalPSpmE6eNx46zPbl13+Lqq+ijO0o4Jfyc/Q1eRw==", + "success": true, + "projectFilePath": "D:\\Документы\\GitHub\\DAS_2023_1\\almukhammetov_bulat_lab_5\\MatrixMultiplication\\MatrixMultiplication\\MatrixMultiplication.csproj", + "expectedPackageFiles": [ + "C:\\Users\\73bul\\.nuget\\packages\\mathnet.numerics\\5.0.0\\mathnet.numerics.5.0.0.nupkg.sha512" + ], + "logs": [] +} \ No newline at end of file diff --git a/almukhammetov_bulat_lab_5/README.md b/almukhammetov_bulat_lab_5/README.md new file mode 100644 index 0000000..9b36443 --- /dev/null +++ b/almukhammetov_bulat_lab_5/README.md @@ -0,0 +1,232 @@ +Альмухамметов ПИбд-42 + +Описание программы: + +1. Ввод количества потоков: Программа начинается с запроса у пользователя количества потоков, которые будут использоваться в параллельных вычислениях. +Если введено некорректное значение, используется значение по умолчанию (4). + +2. Генерация матриц: Программа генерирует три пары квадратных матриц разных размеров (100x100, 300x300, 500x500). Значения в матрицах генерируются случайным образом.1 + +3. Тестирование умножения матриц: Для каждой пары матриц проводится серия из 10 итераций умножения, где каждая итерация включает как последовательное, +так и параллельное умножение. + +4. Подсчет времени и использования памяти: Для каждого умножения измеряется время выполнения и потребление памяти. Используется класс Stopwatch для измерения времени и +GC.GetTotalMemory для оценки использования памяти. + +5. Вывод результатов: По окончании тестирования программа выводит средние значения времени выполнения и потребления памяти для последовательного и параллельного умножения +для каждого размера матриц. + +6. Методы умножения матриц: Реализованы два метода умножения - MultiplyMatricesSequential для последовательного умножения и MultiplyMatricesParallel для параллельного. +Параллельное умножение использует Parallel.For с заданным количеством потоков. + +7. Проверка совместимости матриц: Программа проверяет матрицы на совместимость для умножения (число столбцов первой матрицы должно быть равно числу строк второй). + +8. функции: Включают генерацию матриц (GenerateMatrix), печать матрицы (PrintMatrix) и конвертацию матрицы в формат MathNet.Numerics.LinearAlgebra.Matrix для проверки +корректности умножения (ConvertToMathNetMatrix). + +9. Тестирование операций над матрицами: TestMatrixOperation интегрирует функциональность вышеупомянутых методов, выполняя умножение и собирая статистические данные. + +Результаты тестирования: + +Введите количество потоков: +2 +Прогон #1: + +Последовательно: Время: 13 мс, Память: 39656 байт +Параллельно: Время: 37 мс, Память: 45536 байт +Последовательно: Время: 313 мс, Память: 359992 байт +Параллельно: Время: 168 мс, Память: 360040 байт +Последовательно: Время: 1497 мс, Память: 1000576 байт +Параллельно: Время: 839 мс, Память: 1000288 байт +Прогон #2: + +Последовательно: Время: 11 мс, Память: 40040 байт +Параллельно: Время: 8 мс, Память: 40040 байт +Последовательно: Время: 340 мс, Память: 360576 байт +Параллельно: Время: 163 мс, Память: 360040 байт +Последовательно: Время: 1560 мс, Память: 1000576 байт +Параллельно: Время: 799 мс, Память: 1000040 байт +Прогон #3: + +Последовательно: Время: 9 мс, Память: 40040 байт +Параллельно: Время: 6 мс, Память: 40040 байт +Последовательно: Время: 253 мс, Память: 360576 байт +Параллельно: Время: 154 мс, Память: 360040 байт +Последовательно: Время: 916 мс, Память: 1000576 байт +Параллельно: Время: 485 мс, Память: 1000040 байт +Прогон #4: + +Последовательно: Время: 6 мс, Память: 40040 байт +Параллельно: Время: 4 мс, Память: 40040 байт +Последовательно: Время: 184 мс, Память: 360040 байт +Параллельно: Время: 118 мс, Память: 360576 байт +Последовательно: Время: 900 мс, Память: 1000040 байт +Параллельно: Время: 518 мс, Память: 1000576 байт +Прогон #5: + +Последовательно: Время: 6 мс, Память: 40040 байт +Параллельно: Время: 5 мс, Память: 40040 байт +Последовательно: Время: 182 мс, Память: 360040 байт +Параллельно: Время: 117 мс, Память: 360040 байт +Последовательно: Время: 912 мс, Память: 1000576 байт +Параллельно: Время: 534 мс, Память: 1000576 байт +Прогон #6: + +Последовательно: Время: 6 мс, Память: 40040 байт +Параллельно: Время: 4 мс, Память: 40040 байт +Последовательно: Время: 188 мс, Память: 360040 байт +Параллельно: Время: 95 мс, Память: 360040 байт +Последовательно: Время: 1046 мс, Память: 1000576 байт +Параллельно: Время: 539 мс, Память: 1000576 байт +Прогон #7: + +Последовательно: Время: 6 мс, Память: 40040 байт +Параллельно: Время: 7 мс, Память: 40040 байт +Последовательно: Время: 183 мс, Память: 360040 байт +Параллельно: Время: 115 мс, Память: 360040 байт +Последовательно: Время: 878 мс, Память: 1000576 байт +Параллельно: Время: 546 мс, Память: 1000040 байт +Прогон #8: + +Последовательно: Время: 6 мс, Память: 40040 байт +Параллельно: Время: 6 мс, Память: 40040 байт +Последовательно: Время: 193 мс, Память: 360576 байт +Параллельно: Время: 105 мс, Память: 360040 байт +Последовательно: Время: 1019 мс, Память: 1000576 байт +Параллельно: Время: 506 мс, Память: 1000040 байт +Прогон #9: + +Последовательно: Время: 6 мс, Память: 40040 байт +Параллельно: Время: 4 мс, Память: 40040 байт +Последовательно: Время: 180 мс, Память: 360040 байт +Параллельно: Время: 137 мс, Память: 360576 байт +Последовательно: Время: 968 мс, Память: 1000040 байт +Параллельно: Время: 485 мс, Память: 1000576 байт +Прогон #10: + +Последовательно: Время: 6 мс, Память: 40040 байт +Параллельно: Время: 6 мс, Память: 40040 байт +Последовательно: Время: 186 мс, Память: 360040 байт +Параллельно: Время: 114 мс, Память: 360040 байт +Последовательно: Время: 1020 мс, Память: 1000576 байт +Параллельно: Время: 531 мс, Память: 1000576 байт + +Среднее время (мс) и расход памяти (байт) для последовательного и параллельного умножения матриц: +100x100: Последовательно: Время: 7 мс, Память: 40001 байт +100x100: Параллельно: Время: 8 мс, Память: 40589 байт +300x300: Последовательно: Время: 220 мс, Память: 360196 байт +300x300: Параллельно: Время: 128 мс, Память: 360147 байт +500x500: Последовательно: Время: 1071 мс, Память: 1000468 байт +500x500: Параллельно: Время: 578 мс, Память: 1000332 байт + + +Введите количество потоков: +4 +Прогон #1: + +Последовательно: Время: 14 мс, Память: 39656 байт +Параллельно: Время: 45 мс, Память: 46448 байт +Последовательно: Время: 400 мс, Память: 359992 байт +Параллельно: Время: 355 мс, Память: 361216 байт +Последовательно: Время: 1603 мс, Память: 1000576 байт +Параллельно: Время: 533 мс, Память: 1000040 байт +Прогон #2: + +Последовательно: Время: 10 мс, Память: 40040 байт +Параллельно: Время: 4 мс, Память: 40040 байт +Последовательно: Время: 333 мс, Память: 360576 байт +Параллельно: Время: 167 мс, Память: 360088 байт +Последовательно: Время: 1608 мс, Память: 1000576 байт +Параллельно: Время: 480 мс, Память: 1000040 байт +Прогон #3: + +Последовательно: Время: 11 мс, Память: 40040 байт +Параллельно: Время: 4 мс, Память: 40040 байт +Последовательно: Время: 321 мс, Память: 360040 байт +Параллельно: Время: 114 мс, Память: 360040 байт +Последовательно: Время: 1299 мс, Память: 1000576 байт +Параллельно: Время: 356 мс, Память: 1000040 байт +Прогон #4: + +Последовательно: Время: 6 мс, Память: 40040 байт +Параллельно: Время: 3 мс, Память: 40040 байт +Последовательно: Время: 268 мс, Память: 360040 байт +Параллельно: Время: 73 мс, Память: 360040 байт +Последовательно: Время: 877 мс, Память: 1000576 байт +Параллельно: Время: 347 мс, Память: 1000576 байт +Прогон #5: + +Последовательно: Время: 6 мс, Память: 40040 байт +Параллельно: Время: 3 мс, Память: 40040 байт +Последовательно: Время: 192 мс, Память: 360040 байт +Параллельно: Время: 69 мс, Память: 360040 байт +Последовательно: Время: 1063 мс, Память: 1000576 байт +Параллельно: Время: 345 мс, Память: 1000040 байт +Прогон #6: + +Последовательно: Время: 6 мс, Память: 40040 байт +Параллельно: Время: 3 мс, Память: 40040 байт +Последовательно: Время: 189 мс, Память: 360576 байт +Параллельно: Время: 69 мс, Память: 360040 байт +Последовательно: Время: 885 мс, Память: 1000576 байт +Параллельно: Время: 308 мс, Память: 1000040 байт +Прогон #7: + +Последовательно: Время: 6 мс, Память: 40040 байт +Параллельно: Время: 3 мс, Память: 40040 байт +Последовательно: Время: 178 мс, Память: 360040 байт +Параллельно: Время: 68 мс, Память: 360040 байт +Последовательно: Время: 878 мс, Память: 1000576 байт +Параллельно: Время: 298 мс, Память: 1000040 байт +Прогон #8: + +Последовательно: Время: 6 мс, Память: 40040 байт +Параллельно: Время: 1 мс, Память: 40040 байт +Последовательно: Время: 185 мс, Память: 360576 байт +Параллельно: Время: 83 мс, Память: 360040 байт +Последовательно: Время: 884 мс, Память: 1000040 байт +Параллельно: Время: 293 мс, Память: 1000576 байт +Прогон #9: + +Последовательно: Время: 7 мс, Память: 40040 байт +Параллельно: Время: 2 мс, Память: 40040 байт +Последовательно: Время: 175 мс, Память: 360040 байт +Параллельно: Время: 85 мс, Память: 360040 байт +Последовательно: Время: 895 мс, Память: 1000576 байт +Параллельно: Время: 327 мс, Память: 1000040 байт +Прогон #10: + +Последовательно: Время: 6 мс, Память: 40040 байт +Параллельно: Время: 2 мс, Память: 40040 байт +Последовательно: Время: 178 мс, Память: 360040 байт +Параллельно: Время: 56 мс, Память: 360576 байт +Последовательно: Время: 928 мс, Память: 1000040 байт +Параллельно: Время: 282 мс, Память: 1000576 байт + +Среднее время (мс) и расход памяти (байт) для последовательного и параллельного умножения матриц: +100x100: Последовательно: Время: 7 мс, Память: 40001 байт +100x100: Параллельно: Время: 7 мс, Память: 40680 байт +300x300: Последовательно: Время: 241 мс, Память: 360196 байт +300x300: Параллельно: Время: 113 мс, Память: 360216 байт +500x500: Последовательно: Время: 1092 мс, Память: 1000468 байт +500x500: Параллельно: Время: 356 мс, Память: 1000200 байт + +На основе предоставленных результатов можно сделать несколько важных наблюдений относительно последовательного и параллельного умножения матриц: + +1. Параллельное умножение матриц показывает лучшую производительность по сравнению с последовательным, особенно для матриц большего размера. +Это видно из сравнения времени выполнения: например, для матриц 500x500 время сокращается с 1071 мс до 578 мс при использовании 2 потоков и до 356 мс при использовании 4 потоков. + +2. Для маленьких матриц (100x100), разница в производительности между последовательным и параллельным умножением не так заметна. +Это может быть связано с накладными расходами на создание и управление дополнительными потоками, которые не окупаются на малых объёмах данных. + +3. Увеличение числа потоков с 2 до 4 приводит к дальнейшему улучшению времени выполнения в параллельных вычислениях. +Это подчеркивает важность выбора оптимального количества потоков для конкретной задачи и конфигурации оборудования. + +4. Расход памяти при последовательном и параллельном умножении схож, что указывает на то, что параллельное выполнение не приводит к значительному увеличению потребления памяти. +Это положительный момент, поскольку параллельные вычисления часто ассоциируются с более высоким расходом ресурсов. + +В целом, эти результаты демонстрируют преимущества использования параллельных вычислений для улучшения производительности, особенно на больших объемах данных. + Однако важно учитывать накладные расходы и выбирать количество потоков, оптимальное для конкретной задачи и оборудования. + +Видео: +https://vk.com/video228053206_456240782 \ No newline at end of file