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())); }