private static void Main(string[] args)
        {
            var benchmarkSettings = Configuration.GetConfiguration <PiBenchmarkSettings>("PiBenchmarkSettings");

            var processorCount   = Environment.ProcessorCount;
            var calculationCount = benchmarkSettings.CalculationCount;
            var piDigit          = benchmarkSettings.PiDigit;
            var piIteration      = benchmarkSettings.PiIteration;
            var node2Address     = $"{benchmarkSettings.Node2Ip}:{benchmarkSettings.Node2Port}";

            SwitchToProtobuf();

            Remote.Start(benchmarkSettings.Node1Ip, benchmarkSettings.Node1Port);

            var taskCompletionSource = new TaskCompletionSource <bool>();
            var echoProps            = Actor.FromProducer(() => new EchoActor(calculationCount, taskCompletionSource));

            var piActors     = new PID(node2Address, "piActors");
            var starterActor = new PID(node2Address, "starterActor");
            var echoActor    = Actor.SpawnNamed(echoProps, "echoActor");

            WriteBenchmarkInfo(processorCount, calculationCount);
            Console.WriteLine();
            WritePiBenchMark(piDigit, piIteration);
            Console.WriteLine();

            starterActor.RequestAsync <Start>(new StartRemote()).Wait();

            var options = new CalcOptions {
                Digits = piDigit, Iterations = piIteration, ReceiverAddress = echoActor.Address
            };

            Console.WriteLine("Routee\t\t\tElapsed\t\tMsg/sec");
            var tasks = taskCompletionSource.Task;
            var sw    = Stopwatch.StartNew();

            for (var i = 0; i < calculationCount; i++)
            {
                piActors.Tell(options);
            }
            Task.WaitAll(tasks);
            sw.Stop();

            var totalMessages = calculationCount * 2;
            var x             = (int)(totalMessages / (double)sw.ElapsedMilliseconds * 1000.0d);

            Console.WriteLine($"{processorCount}\t\t\t{sw.ElapsedMilliseconds}\t\t{x}");

            Console.Read();
        }
        private static void Main(string[] args)
        {
            var benchmarkSettings = Configuration.GetConfiguration <PiBenchmarkSettings>("PiBenchmarkSettings");
            var config            = ConfigurationFactory.ParseString(File.ReadAllText("akka-config.hocon"));

            var processorCount   = Environment.ProcessorCount;
            var calculationCount = benchmarkSettings.CalculationCount;
            var piDigit          = benchmarkSettings.PiDigit;
            var piIteration      = benchmarkSettings.PiIteration;
            var node2Address     = $"{benchmarkSettings.Node2Ip}:{benchmarkSettings.Node2Port}";

            var actorSystem = ActorSystem.Create("remote-sys", config);

            var taskCompletionSource = new TaskCompletionSource <bool>();
            var echoActor            = actorSystem.ActorOf(Props.Create(() => new EchoActor(calculationCount, taskCompletionSource)), "echoActor");
            var piActors             = actorSystem.ActorSelection($"akka.tcp://remote-sys@{node2Address}/user/piActors");
            var starterActor         = actorSystem.ActorSelection($"akka.tcp://remote-sys@{node2Address}/user/starterActor");

            var node1Address = echoActor.Path.ToStringWithAddress(new Address("akka.tcp", "remote-sys", benchmarkSettings.Node1Ip, benchmarkSettings.Node1Port));

            WriteBenchmarkInfo(processorCount, calculationCount);
            Console.WriteLine();
            WritePiBenchMark(piDigit, piIteration);
            Console.WriteLine();

            starterActor.Ask <Start>(new StartRemote()).Wait();

            var options = new CalcOptions {
                Digits = piDigit, Iterations = piIteration, ReceiverAddress = node1Address
            };

            Console.WriteLine("Routee\t\t\tElapsed\t\tMsg/sec");
            var tasks = taskCompletionSource.Task;
            var sw    = Stopwatch.StartNew();

            for (var i = 0; i < calculationCount; i++)
            {
                piActors.Tell(options);
            }
            Task.WaitAll(tasks);
            sw.Stop();

            var totalMessages = calculationCount * 2;
            var x             = (int)(totalMessages / (double)sw.ElapsedMilliseconds * 1000.0d);

            Console.WriteLine($"{processorCount}\t\t\t{sw.ElapsedMilliseconds}\t\t{x}");

            Console.Read();
        }
Beispiel #3
0
        private static void Main(string[] args)
        {
            PiBenchmarkSettings benchmarkSettings = Configuration.GetConfiguration <PiBenchmarkSettings>("PiBenchmarkSettings");
            var config = ConfigurationFactory.ParseString(File.ReadAllText("akka-config.hocon"));

            var actorSystem = ActorSystem.Create("PiCalcSys", config);

            var processorCount   = Environment.ProcessorCount;
            var calculationCount = benchmarkSettings.CalculationCount;
            var piDigit          = benchmarkSettings.PiDigit;
            var piIteration      = benchmarkSettings.PiIteration;

            var taskCompletionSource = new TaskCompletionSource <bool>();

            var piActors  = actorSystem.ActorOf(Props.Create <PiCalculatorActor>().WithRouter(new RoundRobinPool(processorCount)));
            var echoActor = actorSystem.ActorOf(Props.Create(() => new EchoActor(calculationCount, taskCompletionSource)));

            WriteBenchmarkInfo(processorCount, calculationCount);
            Console.WriteLine();
            WritePiBenchMark(piDigit, piIteration);
            Console.WriteLine();

            var options = new CalcOptions {
                Digits = piDigit, Iterations = piIteration, ReceiverAddress = echoActor.Path.ToString()
            };

            Console.WriteLine("Routee\t\t\tElapsed\t\tMsg/sec");
            var tasks = taskCompletionSource.Task;
            var sw    = Stopwatch.StartNew();

            for (var i = 0; i < calculationCount; i++)
            {
                piActors.Tell(options);
            }

            Task.WaitAll(tasks);
            sw.Stop();

            var totalMessages = calculationCount * 2;
            var x             = (int)(totalMessages / (double)sw.ElapsedMilliseconds * 1000.0d);

            Console.WriteLine($"{processorCount}\t\t\t{sw.ElapsedMilliseconds}\t\t{x}");

            Console.Read();
        }
        private static void Main(string[] args)
        {
            PiBenchmarkSettings benchmarkSettings = Configuration.GetConfiguration <PiBenchmarkSettings>("PiBenchmarkSettings");

            var processorCount   = Environment.ProcessorCount;
            var calculationCount = benchmarkSettings.CalculationCount;
            var piDigit          = benchmarkSettings.PiDigit;
            var piIteration      = benchmarkSettings.PiIteration;

            var taskCompletionSource = new TaskCompletionSource <bool>();

            var piCalcProps = Router.NewRoundRobinPool(Actor.FromProducer(() => new PiCalculatorActor()), processorCount);
            var echoProps   = Actor.FromProducer(() => new EchoActor(calculationCount, taskCompletionSource));

            var piActors  = Actor.Spawn(piCalcProps);
            var echoActor = Actor.SpawnNamed(echoProps, "echoActor");

            WriteBenchmarkInfo(processorCount, calculationCount);
            Console.WriteLine();
            WritePiBenchMark(piDigit, piIteration);
            Console.WriteLine();

            var options = new CalcOptions {
                Digits = piDigit, Iterations = piIteration, ReceiverAddress = echoActor.Address
            };

            Console.WriteLine("Routee\t\t\tElapsed\t\tMsg/sec");
            var tasks = taskCompletionSource.Task;
            var sw    = Stopwatch.StartNew();

            for (var i = 0; i < calculationCount; i++)
            {
                piActors.Tell(options);
            }
            Task.WaitAll(tasks);
            sw.Stop();

            var totalMessages = calculationCount * 2;
            var x             = (int)(totalMessages / (double)sw.ElapsedMilliseconds * 1000.0d);

            Console.WriteLine($"{processorCount}\t\t\t{sw.ElapsedMilliseconds}\t\t{x}");

            Console.Read();
        }
Beispiel #5
0
        public JsonCalcSpecification([NotNull] JsonCalcSpecification o)
        {
            //CalcObject = o.CalcObject;
            DefaultForOutputFiles = o.DefaultForOutputFiles;
            if (CalcOptions == null)
            {
                CalcOptions = new List <CalcOption>();
            }

            if (o.CalcOptions != null)
            {
                CalcOptions.AddRange(o.CalcOptions);
            }

            DeleteAllButPDF            = o.DeleteAllButPDF;
            DeleteDAT                  = o.DeleteDAT;
            DeviceSelection            = o.DeviceSelection;
            StartDate                  = o.StartDate;
            EndDate                    = o.EndDate;
            EnergyIntensityType        = o.EnergyIntensityType;
            ExternalTimeResolution     = o.ExternalTimeResolution;
            GeographicLocation         = o.GeographicLocation;
            LoadTypePriority           = o.LoadTypePriority;
            OutputDirectory            = o.OutputDirectory;
            RandomSeed                 = o.RandomSeed;
            ShowSettlingPeriod         = o.ShowSettlingPeriod;
            SkipExisting               = o.SkipExisting;
            TemperatureProfile         = o.TemperatureProfile;
            InternalTimeResolution     = o.InternalTimeResolution;
            LoadtypesForPostprocessing = new List <string>();
            if (o.LoadtypesForPostprocessing != null)
            {
                LoadtypesForPostprocessing.AddRange(o.LoadtypesForPostprocessing);
            }
            DeleteSqlite = o.DeleteSqlite;
        }