protected override void prepareConfigFile(string pool, string wallet) { if (this.MiningSetup.MiningPairs.Count > 0) { try { bool IsHyperThreadingEnabled = this.MiningSetup.MiningPairs[0].CurrentExtraLaunchParameters.Contains("enable_ht=true"); int numTr = ExtraLaunchParametersParser.GetThreadsNumber(this.MiningSetup.MiningPairs[0]); if (IsHyperThreadingEnabled) { numTr /= 2; } var config = new XmrStackCPUMinerConfig(numTr, pool, wallet, this.APIPort); var no_prefetch = ExtraLaunchParametersParser.GetNoPrefetch(MiningSetup.MiningPairs[0]); //config.Inti_cpu_threads_conf(false, false, true, ComputeDeviceManager.Avaliable.IsHyperThreadingEnabled); config.Inti_cpu_threads_conf(false, no_prefetch, false, IsHyperThreadingEnabled); var confJson = JObject.FromObject(config); string writeStr = confJson.ToString(); int start = writeStr.IndexOf("{"); int end = writeStr.LastIndexOf("}"); writeStr = writeStr.Substring(start + 1, end - 1); System.IO.File.WriteAllText(WorkingDirectory + GetConfigFileName(), writeStr); } catch { } } }
private Dictionary <DeviceType, string> PrepareConfigFiles(string url, string btcAddress, string worker, bool bench = false) { var configs = new Dictionary <DeviceType, string>(); var types = new List <DeviceType>(); var isHeavy = false; foreach (var pair in MiningSetup.MiningPairs) { if (!types.Contains(pair.Device.DeviceType)) { types.Add(pair.Device.DeviceType); } if (pair.Algorithm.NiceHashID == AlgorithmType.CryptoNightHeavy) { isHeavy = true; } } var configName = bench ? GetBenchConfigName() : ConfigName; var config = ParseJsonFile <XmrStakConfig>(filename: DefConfigName) ?? new XmrStakConfig(); config.httpd_port = ApiPort; if (bench) { config.SetBenchmarkOptions(GetLogFileName()); } WriteJsonFile(config, configName, DefConfigName); var pools = new XmrStakConfigPool(); pools.SetupPools(url, GetUsername(btcAddress, worker), isHeavy); WriteJsonFile(pools, GetPoolConfigName()); WriteJsonFile(pools, DefPoolName); foreach (var type in types) { if (type == DeviceType.CPU) { var cpuPair = MiningSetup.MiningPairs.Find(p => p.Device.DeviceType == type); var isHyperThreadingEnabled = cpuPair.CurrentExtraLaunchParameters.Contains("enable_ht=true"); var numTr = ExtraLaunchParametersParser.GetThreadsNumber(cpuPair); var no_prefetch = ExtraLaunchParametersParser.GetNoPrefetch(cpuPair); if (isHyperThreadingEnabled) { numTr /= 2; } // Fallback on classic config if haven't been able to open var configCpu = ParseJsonFile <XmrStakConfigCpu>(type) ?? new XmrStakConfigCpu(numTr); if (configCpu.cpu_threads_conf.Count == 0) { // No thread count would prevent CPU from mining, so fill with estimates // Otherwise use values set by xmr-stak/user configCpu.Inti_cpu_threads_conf(false, no_prefetch, false, isHyperThreadingEnabled); } configs[type] = WriteJsonFile(configCpu, type); } else { var ids = MiningSetup.MiningPairs.Where(p => p.Device.DeviceType == type).Select(p => p.Device.ID); if (type == DeviceType.AMD) { var configGpu = ParseJsonFile <XmrStakConfigAmd>(type) ?? new XmrStakConfigAmd(); configGpu.SetupThreads(ids); configs[type] = WriteJsonFile(configGpu, type); } else { var keepBVals = MiningSetup.MiningPairs.Any(p => p.CurrentExtraLaunchParameters.Contains("--keep-b") && p.Device.DeviceType == type); var configGpu = ParseJsonFile <XmrStakConfigNvidia>(type) ?? new XmrStakConfigNvidia(); // B values do not seem to work on many nv setups, workaround by forcing higher vals unless user opts out configGpu.SetupThreads(ids); if (!keepBVals) { configGpu.OverrideBVals(); } configs[type] = WriteJsonFile(configGpu, type); } } } return(configs); }
private Dictionary <DeviceType, string> PrepareConfigFiles() { lock (_fileLock) { var configs = new Dictionary <DeviceType, string>(); var types = new List <DeviceType>(); foreach (var pair in MiningSetup.MiningPairs) { if (!types.Contains(pair.Device.DeviceType)) { types.Add(pair.Device.DeviceType); } } foreach (var type in types) { if (type == DeviceType.CPU) { var cpuPair = MiningSetup.MiningPairs.Find(p => p.Device.DeviceType == type); var isHyperThreadingEnabled = cpuPair.CurrentExtraLaunchParameters.Contains("enable_ht=true"); var numTr = ExtraLaunchParametersParser.GetThreadsNumber(cpuPair); var noPrefetch = ExtraLaunchParametersParser.GetNoPrefetch(cpuPair); if (isHyperThreadingEnabled) { numTr /= 2; } // Fallback on classic config if haven't been able to open var configCpu = ParseJsonFile <XmrStakConfigCpu>(type) ?? new XmrStakConfigCpu(numTr); if (configCpu.cpu_threads_conf.Count == 0) { // No thread count would prevent CPU from mining, so fill with estimates // Otherwise use values set by xmr-stak/user configCpu.InitCpuThreads(false, noPrefetch, false, isHyperThreadingEnabled); } configs[type] = WriteJsonFile(configCpu, type); } else { var ids = MiningSetup.MiningPairs.Where(p => p.Device.DeviceType == type) .Select(p => p.Device.ID); if (type == DeviceType.AMD) { var configGpu = ParseJsonFile <XmrStakConfigAmd>(type) ?? new XmrStakConfigAmd(); configGpu.SetupThreads(ids); configs[type] = WriteJsonFile(configGpu, type); } else { var keepBVals = MiningSetup.MiningPairs.Any(p => p.CurrentExtraLaunchParameters.Contains("--keep-b") && p.Device.DeviceType == type); var configGpu = ParseJsonFile <XmrStakConfigNvidia>(type) ?? new XmrStakConfigNvidia(); // B values do not seem to work on many nv setups, workaround by forcing higher vals unless user opts out configGpu.SetupThreads(ids); if (!keepBVals) { configGpu.OverrideBVals(); } configs[type] = WriteJsonFile(configGpu, type); } } } return(configs); } }