示例#1
0
 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);
        }
示例#3
0
        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);
            }
        }