Beispiel #1
0
        public void Run(MasterConfigurationModel configuration)
        {
            var solution = configuration.SolutionProfiles.GetValue(RunConfigurationModel.ActiveSolutionConfiguration);
            var workload = configuration.WorkloadProfiles.GetValue(RunConfigurationModel.ActiveWorkloadConfiguration);

            var i = 0;

            foreach (var instances in solution)
            {
                i++;
                var outputPools = GetOutputPools(configuration.Pools, instances.Pools);

                if (outputPools.Count == 0)
                {
                    Console.WriteLine(@"Instance {0}.{1} does not contain any pool bindings.", RunConfigurationModel.ActiveSolutionConfiguration, i);
                    continue;
                }

                var currency = GetPoolCurrency(outputPools);
                if (string.IsNullOrWhiteSpace(currency))
                {
                    Console.WriteLine(@"Instance {0}.{1} does not contain valid currency. Make sure currency for all pools is set to the same value.", RunConfigurationModel.ActiveSolutionConfiguration, i);
                    continue;
                }

                var utilizedHardware = instances.Hardware.Select(x => new UtilizedHardware
                {
                    Hardware = configuration.Hardware.GetValue(x),
                    Profile  = workload.GetValue(x)
                }).ToList();

                var cpuArgument    = GetCpuArgument(configuration.PathsConfiguration.CpuTemplate, configuration.CpuProfiles, utilizedHardware.Where(x => x.Hardware.Type == "cpu").ToList());
                var amdArgument    = GetAmdArgument(configuration.PathsConfiguration.AmdTemplate, configuration.AmdProfiles, utilizedHardware.Where(x => x.Hardware.Type == "amd").ToList());
                var nvidiaArgument = GetNvidiaArgument(configuration.PathsConfiguration.NvidiaTemplate, configuration.NvidiaProfiles, utilizedHardware.Where(x => x.Hardware.Type == "nvidia").ToList());

                var configArgument = GetConfigurationArgument(configuration.PathsConfiguration.ConfigTemplate);
                var poolsArgument  = GetPoolsArgument(configuration.PathsConfiguration.PoolsTemplate, outputPools, currency);

                RunMiner($"{configArgument} {poolsArgument} {cpuArgument} {amdArgument} {nvidiaArgument}");
            }
        }
 private void InvalidateConfiguration()
 {
     _masterConfigurationModel = null;
 }
 private MasterConfigurationModel GetMasterConfigurationModel()
 {
     return(_masterConfigurationModel ?? (_masterConfigurationModel = LoadConfiguration()));
 }