From f2691262810acc3209cd39eda10c03bc440199f0 Mon Sep 17 00:00:00 2001 From: Savitskiy_ISEbd-41 Date: Fri, 15 Dec 2023 21:02:23 +0400 Subject: [PATCH] lab 5 --- tasks/savitskiy-al/lab_5/.gitignore | 456 ++++++++++++++++++ .../lab_5/ConsoleApp1/ConsoleApp1.sln | 25 + .../ConsoleApp1/ConsoleApp1.csproj | 14 + .../ConsoleApp1/ConsoleApp1/MatrixHelper.cs | 56 +++ .../lab_5/ConsoleApp1/ConsoleApp1/Program.cs | 105 ++++ tasks/savitskiy-al/lab_5/README.md | 60 +++ tasks/savitskiy-al/lab_5/pic/1.png | Bin 0 -> 21068 bytes tasks/savitskiy-al/lab_5/pic/2.png | Bin 0 -> 25500 bytes tasks/savitskiy-al/lab_5/pic/3.png | Bin 0 -> 22245 bytes 9 files changed, 716 insertions(+) create mode 100644 tasks/savitskiy-al/lab_5/.gitignore create mode 100644 tasks/savitskiy-al/lab_5/ConsoleApp1/ConsoleApp1.sln create mode 100644 tasks/savitskiy-al/lab_5/ConsoleApp1/ConsoleApp1/ConsoleApp1.csproj create mode 100644 tasks/savitskiy-al/lab_5/ConsoleApp1/ConsoleApp1/MatrixHelper.cs create mode 100644 tasks/savitskiy-al/lab_5/ConsoleApp1/ConsoleApp1/Program.cs create mode 100644 tasks/savitskiy-al/lab_5/README.md create mode 100644 tasks/savitskiy-al/lab_5/pic/1.png create mode 100644 tasks/savitskiy-al/lab_5/pic/2.png create mode 100644 tasks/savitskiy-al/lab_5/pic/3.png diff --git a/tasks/savitskiy-al/lab_5/.gitignore b/tasks/savitskiy-al/lab_5/.gitignore new file mode 100644 index 0000000..3c395b3 --- /dev/null +++ b/tasks/savitskiy-al/lab_5/.gitignore @@ -0,0 +1,456 @@ +var/result/ + +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. +## +## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore + +# User-specific files +*.rsuser +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Mono auto generated files +mono_crash.* + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +[Ww][Ii][Nn]32/ +[Aa][Rr][Mm]/ +[Aa][Rr][Mm]64/ +bld/ +[Bb]in/ +[Oo]bj/ +[Ll]og/ +[Ll]ogs/ + +# Visual Studio 2015/2017 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# Visual Studio 2017 auto generated files +Generated\ Files/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUnit +*.VisualState.xml +TestResult.xml +nunit-*.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# Benchmark Results +BenchmarkDotNet.Artifacts/ + +# .NET +project.lock.json +project.fragment.lock.json +artifacts/ + +# Tye +.tye/ + +# ASP.NET Scaffolding +ScaffoldingReadMe.txt + +# StyleCop +StyleCopReport.xml + +# Files built by Visual Studio +*_i.c +*_p.c +*_h.h +*.ilk +*.meta +*.obj +*.iobj +*.pch +*.pdb +*.ipdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*_wpftmp.csproj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# Visual Studio Trace Files +*.e2e + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# AxoCover is a Code Coverage Tool +.axoCover/* +!.axoCover/settings.json + +# Coverlet is a free, cross platform Code Coverage Tool +coverage*.json +coverage*.xml +coverage*.info + +# Visual Studio code coverage results +*.coverage +*.coveragexml + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# Note: Comment the next line if you want to checkin your web deploy settings, +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted +PublishScripts/ + +# NuGet Packages +*.nupkg +# NuGet Symbol Packages +*.snupkg +# The packages folder can be ignored because of Package Restore +**/[Pp]ackages/* +# except build/, which is used as an MSBuild target. +!**/[Pp]ackages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/[Pp]ackages/repositories.config +# NuGet v3's project.json files produces more ignorable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Windows Store app package directories and files +AppPackages/ +BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt +*.appx +*.appxbundle +*.appxupload + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!?*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.jfm +*.pfx +*.publishsettings +orleans.codegen.cs + +# Including strong name files can present a security risk +# (https://github.com/github/gitignore/pull/2483#issue-259490424) +#*.snk + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm +ServiceFabricBackup/ +*.rptproj.bak + +# SQL Server files +*.mdf +*.ldf +*.ndf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings +*.rptproj.rsuser +*- [Bb]ackup.rdl +*- [Bb]ackup ([0-9]).rdl +*- [Bb]ackup ([0-9][0-9]).rdl + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat +node_modules/ + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) +*.vbw + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# CodeRush personal settings +.cr/personal + +# Python Tools for Visual Studio (PTVS) +__pycache__/ +*.pyc + +# Cake - Uncomment if you are using it +# tools/** +# !tools/packages.config + +# Tabs Studio +*.tss + +# Telerik's JustMock configuration file +*.jmconfig + +# BizTalk build output +*.btp.cs +*.btm.cs +*.odx.cs +*.xsd.cs + +# OpenCover UI analysis results +OpenCover/ + +# Azure Stream Analytics local run output +ASALocalRun/ + +# MSBuild Binary and Structured Log +*.binlog + +# NVidia Nsight GPU debugger configuration file +*.nvuser + +# MFractors (Xamarin productivity tool) working folder +.mfractor/ + +# Local History for Visual Studio +.localhistory/ + +# BeatPulse healthcheck temp database +healthchecksdb + +# Backup folder for Package Reference Convert tool in Visual Studio 2017 +MigrationBackup/ + +# Ionide (cross platform F# VS Code tools) working folder +.ionide/ + +# Fody - auto-generated XML schema +FodyWeavers.xsd + +## +## Visual studio for Mac +## + + +# globs +Makefile.in +*.userprefs +*.usertasks +config.make +config.status +aclocal.m4 +install-sh +autom4te.cache/ +*.tar.gz +tarballs/ +test-results/ + +# Mac bundle stuff +*.dmg +*.app + +# content below from: https://github.com/github/gitignore/blob/master/Global/macOS.gitignore +# General +.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + +# content below from: https://github.com/github/gitignore/blob/master/Global/Windows.gitignore +# Windows thumbnail cache files +Thumbs.db +ehthumbs.db +ehthumbs_vista.db + +# Dump file +*.stackdump + +# Folder config file +[Dd]esktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Windows Installer files +*.cab +*.msi +*.msix +*.msm +*.msp + +# Windows shortcuts +*.lnk + +# JetBrains Rider +.idea/ +*.sln.iml + +## +## Visual Studio Code +## +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json diff --git a/tasks/savitskiy-al/lab_5/ConsoleApp1/ConsoleApp1.sln b/tasks/savitskiy-al/lab_5/ConsoleApp1/ConsoleApp1.sln new file mode 100644 index 0000000..78d9ed2 --- /dev/null +++ b/tasks/savitskiy-al/lab_5/ConsoleApp1/ConsoleApp1.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.8.34322.80 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ConsoleApp1", "ConsoleApp1\ConsoleApp1.csproj", "{8EE37F82-A2D1-49A3-B4D0-7BF7D4A43CB0}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {8EE37F82-A2D1-49A3-B4D0-7BF7D4A43CB0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8EE37F82-A2D1-49A3-B4D0-7BF7D4A43CB0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8EE37F82-A2D1-49A3-B4D0-7BF7D4A43CB0}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8EE37F82-A2D1-49A3-B4D0-7BF7D4A43CB0}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {720A247E-1C5E-46BF-93FA-4F3FE606A15D} + EndGlobalSection +EndGlobal diff --git a/tasks/savitskiy-al/lab_5/ConsoleApp1/ConsoleApp1/ConsoleApp1.csproj b/tasks/savitskiy-al/lab_5/ConsoleApp1/ConsoleApp1/ConsoleApp1.csproj new file mode 100644 index 0000000..272dc0e --- /dev/null +++ b/tasks/savitskiy-al/lab_5/ConsoleApp1/ConsoleApp1/ConsoleApp1.csproj @@ -0,0 +1,14 @@ + + + + Exe + net8.0 + enable + enable + + + + + + + diff --git a/tasks/savitskiy-al/lab_5/ConsoleApp1/ConsoleApp1/MatrixHelper.cs b/tasks/savitskiy-al/lab_5/ConsoleApp1/ConsoleApp1/MatrixHelper.cs new file mode 100644 index 0000000..87620b1 --- /dev/null +++ b/tasks/savitskiy-al/lab_5/ConsoleApp1/ConsoleApp1/MatrixHelper.cs @@ -0,0 +1,56 @@ +using System; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ConsoleApp1 +{ + public class MatrixService + { + + static readonly Random rand = new Random(); + + public int[,] RandomGenerateMatrix(int dimensionsCount) + { + int[,] result = new int[dimensionsCount, dimensionsCount]; + for (int i = 0; i < dimensionsCount; i++) + { + for (int j = 0; j < dimensionsCount; j++) + { + result[i, j] = rand.Next(1000); + } + } + return result; + } + + public int[,] MultiplicationMatrix(int[,] matrix1, int[,] matrix2, int threadCount) + { + var result = new int[matrix1.GetLength(0), matrix1.GetLength(1)]; + for(int i = 0; i < result.GetLength(0); i++) + { + for (int j = 0; j < result.GetLength(1); j++) + { + result[i, j] = 0; + } + } + + for (int i = 0; i < matrix1.GetLength(0); i++) + { + Parallel.For(0, matrix2.GetLength(1), new ParallelOptions() { MaxDegreeOfParallelism = threadCount }, + (j) => + { + + for (int k = 0; k < matrix2.GetLength(0); k++) + { + var value = matrix1[i, k] * matrix2[k, j]; + Interlocked.Add(ref result[i, j], value); + } + }); + } + + return result; + } + } +} diff --git a/tasks/savitskiy-al/lab_5/ConsoleApp1/ConsoleApp1/Program.cs b/tasks/savitskiy-al/lab_5/ConsoleApp1/ConsoleApp1/Program.cs new file mode 100644 index 0000000..7e1d9b8 --- /dev/null +++ b/tasks/savitskiy-al/lab_5/ConsoleApp1/ConsoleApp1/Program.cs @@ -0,0 +1,105 @@ +// See https://aka.ms/new-console-template for more information + +using BenchmarkDotNet.Attributes; +using BenchmarkDotNet.Running; +using ConsoleApp1; + +BenchmarkRunner.Run(); + + +//var matrixService = new MatrixService(); + +//var testArr1 = new int[3, 3] +//{ +// {5, 1, 6 }, +// {-1, 7, 9 }, +// {-8, 2, 3 }, +//}; + +//var testArr2 = new int[3, 3] +//{ +// {8, 1, 4 }, +// {5, -5, 7 }, +// {-3, -2, 7 }, +//}; + +//var result = matrixService.MultiplicationMatrix(testArr1, testArr2, 12); + +//for(int i = 0; i < result.GetLength(0); i++) +//{ +// for (int j = 0; j < result.GetLength(1); j++) +// { +// Console.Write(result[i, j] + " "); +// } +// Console.WriteLine(); +//} + + +[MemoryDiagnoser] +public class MatrixTest +{ + + int[,] firstMatrix100; + int[,] secondMatrix100; + + int[,] firstMatrix300; + int[,] secondMatrix300; + + int[,] firstMatrix500; + int[,] secondMatrix500; + + + MatrixService matrixService; + + + public MatrixTest() + { + matrixService = new MatrixService(); + + firstMatrix100 = matrixService.RandomGenerateMatrix(100); + secondMatrix100 = matrixService.RandomGenerateMatrix(100); + + firstMatrix300 = matrixService.RandomGenerateMatrix(300); + secondMatrix300 = matrixService.RandomGenerateMatrix(300); + + firstMatrix500 = matrixService.RandomGenerateMatrix(500); + secondMatrix500 = matrixService.RandomGenerateMatrix(500); + + } + + [Benchmark] + public int[,] MultiplicationMatrix100MonoThread() + { + return matrixService.MultiplicationMatrix(firstMatrix100, secondMatrix100, 1); + } + + [Benchmark] + public int[,] MultiplicationMatrix100MultiThread() + { + return matrixService.MultiplicationMatrix(firstMatrix100, secondMatrix100, 12); + } + + [Benchmark] + public int[,] MultiplicationMatrix300MonoThread() + { + return matrixService.MultiplicationMatrix(firstMatrix300, secondMatrix300, 1); + } + + [Benchmark] + public int[,] MultiplicationMatrix300MultiThread() + { + return matrixService.MultiplicationMatrix(firstMatrix300, secondMatrix300, 12); + } + + [Benchmark] + public int[,] MultiplicationMatrix500MonoThread() + { + return matrixService.MultiplicationMatrix(firstMatrix500, secondMatrix500, 1); + } + + [Benchmark] + public int[,] MultiplicationMatrix500MultiThread() + { + return matrixService.MultiplicationMatrix(firstMatrix500, secondMatrix500, 12); + } +} diff --git a/tasks/savitskiy-al/lab_5/README.md b/tasks/savitskiy-al/lab_5/README.md new file mode 100644 index 0000000..d7d3169 --- /dev/null +++ b/tasks/savitskiy-al/lab_5/README.md @@ -0,0 +1,60 @@ +# Отчет по лабораторной работе №5 + +Выполнил студент гр. ИСЭбд-41 Савицкий А.В. + +## Создание приложения + +Выбрал язык C#, Консольное приложение. + +Проверяю правильность работы алгоритма + +```cs + public int[,] MultiplicationMatrix(int[,] matrix1, int[,] matrix2, int threadCount) +{ + var result = new int[matrix1.GetLength(0), matrix1.GetLength(1)]; + for(int i = 0; i < result.GetLength(0); i++) + { + for (int j = 0; j < result.GetLength(1); j++) + { + result[i, j] = 0; + } + } + + for (int i = 0; i < matrix1.GetLength(0); i++) + { + Parallel.For(0, matrix2.GetLength(1), new ParallelOptions() { MaxDegreeOfParallelism = threadCount }, + (j) => + { + + for (int k = 0; k < matrix2.GetLength(0); k++) + { + var value = matrix1[i, k] * matrix2[k, j]; + Interlocked.Add(ref result[i, j], value); + } + }); + } + + return result; +} +``` + +![](pic/1.png) + +Установил библиотеку BenchmarkDotNet для замера производительности алгоритма. + +## Бенчмарки + +Делаю 6 пробных запусков +Матрицы 100х100, 300х300, 500х500 +Количество потоков 1,12 + +![](pic/2.png) + +Нас интересуют преимущественно две колонки - Mean и Allocated. + +Mean показывает среднее время выполнения бенчмарка +Allocated показывает количество выделенной памяти + +Для матриц 100х100 однопоточный алгоритм отработал быстрее чем многопоточный, однако для более больших матриц время выполнения серьезно уменшилось. + +Вывод: Параллельный алгоритм работает быстрее чем однопоточный, если мы обрабатываем большие данные. Также многопоточное выполнение занимает больше памяти. \ No newline at end of file diff --git a/tasks/savitskiy-al/lab_5/pic/1.png b/tasks/savitskiy-al/lab_5/pic/1.png new file mode 100644 index 0000000000000000000000000000000000000000..82802aeaa8572ed1cc7ab73e3575bd009ee20731 GIT binary patch literal 21068 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 literal 0 HcmV?d00001 diff --git a/tasks/savitskiy-al/lab_5/pic/2.png b/tasks/savitskiy-al/lab_5/pic/2.png new file mode 100644 index 0000000000000000000000000000000000000000..480c1ff4f216c3b52e4c482f9921042f1d4f89fb GIT binary patch literal 25500 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 D^ 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 YeXk&f{7W79x($fhsk2I1ie`TQ0$xia0{{R3 literal 0 HcmV?d00001 diff --git a/tasks/savitskiy-al/lab_5/pic/3.png b/tasks/savitskiy-al/lab_5/pic/3.png new file mode 100644 index 0000000000000000000000000000000000000000..680ef4c7ebbcc252ee90563e0f395c5c8bab33eb GIT binary patch literal 22245 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 ZM(lmqaB>=wW(&R#do>6sgk{|#M5^GE;y literal 0 HcmV?d00001