From b529a7061acb261ed711652a6364ae25ab03519f Mon Sep 17 00:00:00 2001 From: Rokas Puzonas Date: Tue, 23 May 2023 00:50:30 +0300 Subject: [PATCH] add parallel variants and analysis --- Lab3/Analysis.xlsx | Bin 0 -> 37694 bytes Lab3/Ataskaita.docx | Bin 0 -> 51018 bytes Lab3/Program.cs | 205 ++++++++++++++++++++++++++++++++++++++++++-- 3 files changed, 196 insertions(+), 9 deletions(-) create mode 100644 Lab3/Analysis.xlsx create mode 100644 Lab3/Ataskaita.docx diff --git a/Lab3/Analysis.xlsx b/Lab3/Analysis.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..9d96d187ba4dc90e42c66a7991763f90d364be5c GIT binary patch literal 37694 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 ZQ$ax*7Km{|Ku`idb3iv4iQu1q{TG4eoHqaf literal 0 HcmV?d00001 diff --git a/Lab3/Ataskaita.docx b/Lab3/Ataskaita.docx new file mode 100644 index 0000000000000000000000000000000000000000..ae5a57e2581bd77b9e98b448ce4cdec5f4f2f9ac GIT binary patch literal 51018 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

}}Q9$56nX-Pg5w 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

literal 0 HcmV?d00001 diff --git a/Lab3/Program.cs b/Lab3/Program.cs index afac41d..1b2dd0f 100644 --- a/Lab3/Program.cs +++ b/Lab3/Program.cs @@ -1,4 +1,6 @@ -using System.Reflection.Metadata.Ecma335; +using System.Diagnostics; +using System.Reflection.Metadata.Ecma335; +using System.Runtime.InteropServices; namespace Lab3 { @@ -36,11 +38,69 @@ namespace Lab3 return k; } - public static long methodToAnalysis2(int n, int[] arr) + public static long methodToAnalysisParallel1(int[] arr) + { + int coreCount = Environment.ProcessorCount; + + int n = arr.Length; + if (n % coreCount != 0) + { + throw new Exception("Array size is not divisable by the core count"); + } + + long nPerCore = n / coreCount; + long nnPerCore = n * n / coreCount; + + var tasks = new List>(); + for (int coreIdx = 0; coreIdx < coreCount; coreIdx++) + { + int localCoreIdx = coreIdx; + var task = Task.Factory.StartNew(() => + { + long subk = 0; + for (long i = 0; i < nPerCore; i++) + { + if (arr[localCoreIdx * nPerCore + i] / 7 == 0) + { + subk -= 2; + } + else + { + subk += 3; + } + } + + if (arr[0] > 0) + { + for (long i = 0; i < nnPerCore; i++) + { + if (arr[0] > 0) + { + subk += 3; + } + } + } + + return subk; + }); + tasks.Add(task); + } + + long k = n; + Task.WaitAll(tasks.ToArray()); + foreach (var task in tasks) + { + k += task.Result; + } + + return k; + } + + public static long methodToAnalysis2(int[] arr) { long k = 0; - for (int i = 0; i < n; i++) + for (int i = 0; i < arr.Length; i++) { k += arr[i] + FF4(i, arr); } @@ -48,6 +108,43 @@ namespace Lab3 return k; } + public static long methodToAnalysisParallel2(int[] arr) + { + int coreCount = Environment.ProcessorCount; + + int n = arr.Length; + if (n % coreCount != 0) + { + throw new Exception("Array size is not divisable by the core count"); + } + + var tasks = new List>(); + for (int coreIdx = 0; coreIdx < coreCount; coreIdx++) + { + int localCoreIdx = coreIdx; + var task = Task.Factory.StartNew(() => + { + long subk = 0; + for (int i = 0; i < n / coreCount; i++) + { + int j = localCoreIdx * (n / coreCount) + i; + subk += arr[j] + FF4(j, arr); + } + return subk; + }); + tasks.Add(task); + } + + long k = 0; + Task.WaitAll(tasks.ToArray()); + foreach (var task in tasks) + { + k += task.Result; + } + + return k; + } + public static long FF4(int n, int[] arr) { if (n > 0 && arr.Length > n && arr[n] < 0) @@ -95,14 +192,104 @@ namespace Lab3 return memo[n, weightLimit]; } + public static int[] createTestArray(int n) + { + int[] arr = new int[n]; + for (int i = 0; i < n; i++) + { + arr[i] = -(i+1); + } + return arr; + } + + public static void benchmarkKnapsack(Func knapsackFunc, int[] sizes, bool silent = false) + { + var stopWatch = new Stopwatch(); + foreach (int size in sizes) + { + int weightLimit = size*10; + int[] weights = createTestArray(size); + int[] values = createTestArray(size); + int n = weights.Length; + + if (silent) { + knapsackFunc(weightLimit, n, weights, values); + } else { + stopWatch.Reset(); + stopWatch.Start(); + knapsackFunc(weightLimit, n, weights, values); + stopWatch.Stop(); + Console.WriteLine("{0}, {1}", size, Math.Round(stopWatch.Elapsed.TotalSeconds * 1000, 5)); + } + } + } + + public static void benchmarkSimple(Func func, int[] sizes, bool silent = false) + { + var stopWatch = new Stopwatch(); + foreach (int size in sizes) + { + int[] arr = createTestArray(size); + + if (silent) + { + func(arr); + } + else + { + stopWatch.Reset(); + stopWatch.Start(); + func(arr); + stopWatch.Stop(); + Console.WriteLine("{0}, {1}", size, Math.Round(stopWatch.Elapsed.TotalSeconds * 1000, 5)); + } + } + } + static void Main(string[] args) { - int weightLimit = 15; - int[] weights = new int[]{ 7, 2, 1, 9 }; - int[] values = new int[]{ 5, 4, 7, 2 }; - int n = weights.Length; - Console.WriteLine(knapsackDP(weightLimit, n, weights, values)); - Console.WriteLine(knapsack(weightLimit, n, weights, values)); + int cores = Environment.ProcessorCount; + Console.WriteLine("The number of processors on this computer is {0}", Environment.ProcessorCount); + + /* + Console.WriteLine(); + + int[] knapsackSizes = new int[] { 20, 21, 22, 23, 24, 25, 26, 27, 28 }; + Console.WriteLine("Knapsack Recursive (ms):"); + benchmarkKnapsack(knapsack, new int[] { 10 }, true); + benchmarkKnapsack(knapsack, knapsackSizes); + Console.WriteLine("Knapsack DP (ms):"); + benchmarkKnapsack(knapsackDP, new int[] { 10 }, true); + benchmarkKnapsack(knapsackDP, knapsackSizes); + */ + + /* + Console.WriteLine(); + + int[] method1Sizes = new int[] { 10, 50, 100, 250, 500, 1000, 2000 } + .Select(size => size * cores) + .ToArray(); + Console.WriteLine("methodToAnalysis1 (ms):"); + benchmarkSimple(methodToAnalysis1, new int[] { cores }, true); + benchmarkSimple(methodToAnalysis1, method1Sizes); + Console.WriteLine("methodToAnalysisParallel1 (ms):"); + benchmarkSimple(methodToAnalysisParallel1, new int[] { cores }, true); + benchmarkSimple(methodToAnalysisParallel1, method1Sizes); + */ + + + Console.WriteLine(); + + int[] method2Sizes = new int[] { 10, 50, 100, 500, 1000, 3500 } + .Select(size => size * cores) + .ToArray(); + Console.WriteLine("methodToAnalysis2 (ms):"); + benchmarkSimple(methodToAnalysis2, new int[] { cores }, true); + benchmarkSimple(methodToAnalysis2, method2Sizes); + Console.WriteLine("methodToAnalysisParallel2 (ms):"); + benchmarkSimple(methodToAnalysisParallel2, new int[] { cores }, true); + benchmarkSimple(methodToAnalysisParallel2, method2Sizes); + } } } \ No newline at end of file