public static void NonPipelined(MessureContext context) { var tileSize = (int)context.Data["tilesize"]; var threads = (int) context.Data["threads"]; var btm = (BlockTridiagonalMatrix<double>)context.Data["btm"]; BlockTridiagonalMatrix<double> result; var sf = new StigsFormulae<double>(btm, tileSize, out result); var nonpl = new NonPipelinedStigsFormulae(sf); var pm = new ProcessManager(nonpl, threads); pm.Start(); pm.Join(); }
static void Main(string[] args) { if (!(args.Length > 0 && int.TryParse(args[0], out ThreadCount))) { Console.Write("Enter Thread Count (default {0}): ", Environment.ProcessorCount); var tc = Console.ReadLine(); if (!int.TryParse(tc, out ThreadCount)) ThreadCount = Environment.ProcessorCount; } if (!(args.Length > 1 && int.TryParse(args[1], out TileSize))) { Console.Write("Enter TileSize (default {0}): ", 30); var tc = Console.ReadLine(); if (!int.TryParse(tc, out TileSize)) TileSize = 30; } SourceFile = args.Length > 2 ? args[2] : @"C:\Users\eh\Documents\KU\Inversion-of-Block-Tridiagonal-Matrices\Dataset\ds100x100x300.dat"; Log.TraceEvent(TraceEventType.Start, 0, "MessurePerformance"); Log.TraceEvent(TraceEventType.Information, 0, "ProcessorCount = {0}", Environment.ProcessorCount); Log.TraceEvent(TraceEventType.Information, 0, "ThreadCount = {0}", ThreadCount); Log.TraceEvent(TraceEventType.Information, 0, "TileSize = {0}", TileSize); Log.TraceEvent(TraceEventType.Information, 0, "SourceFile = {0}", SourceFile); Stopwatch sw = new Stopwatch(); var tileSize = TileSize; var threads = ThreadCount; var btm = BlockTridiagonalMatrix<double>.DeSerializeFromFile(SourceFile); sw.Start(); BlockTridiagonalMatrix<double> result; var sf = new StigsFormulae<double>(btm, tileSize, out result); var nonpl = new NonPipelinedStigsFormulae(sf); var pm = new ProcessManagerSlim(nonpl, threads); pm.Start(); pm.Join(); sw.Stop(); Log.TraceEvent(TraceEventType.Information, 0, "Running time: {0}", sw.Elapsed); //Debug.Listeners.Add(new TextWriterTraceListener(Console.Out)); //Debug.AutoFlush = true; //Process.GetCurrentProcess().PriorityClass = ProcessPriorityClass.High; //AutoResetEventVsMonitorPulseWait.Start(ThreadCount, TileSize, args[2]); //var testData = @"C:\Users\eh\Documents\KU\Inversion-of-Block-Tridiagonal-Matrices\Dataset\ds3x100x100.dat"; //var resultFile = @"C:\Users\eh\Documents\KU\Inversion-of-Block-Tridiagonal-Matrices\Dataset\ds3x100x100-res.csv"; //var tileSize10To30Step5 = new TestParameter<string, int>("TileSizes", 10, 30, x => x + 5); //var tileSize40To60Step10 = new TestParameter<string, int>("TileSizes", 40, 60, x => x + 10); //var threads = new TestParameter<string, int>("ThreadCounts", new[] { 1, 2, 4, 6, 8 }); //using (var btmTestSet = new BtmInversionPerformanceTestSet(testData, resultFile, threads, tileSize40To60Step10, tileSize10To30Step5)) //{ // btmTestSet.Execute(); //} Log.TraceEvent(TraceEventType.Stop, 0, "MessurePerformance"); foreach (TraceListener listener in Trace.Listeners) { listener.Flush(); } }