示例#1
0
        protected override void Init()
        {
            // check platform id
            var  openClAmdPlatformResult    = MinerToolkit.GetOpenCLPlatformID(_miningPairs);
            var  openClAmdPlatformNum       = openClAmdPlatformResult.Item1;
            bool openClAmdPlatformNumUnique = openClAmdPlatformResult.Item2;

            if (!openClAmdPlatformNumUnique)
            {
                Logger.Error(_logGroup, "Initialization of miner failed. Multiple OpenCLPlatform IDs found!");
                throw new InvalidOperationException("Invalid mining initialization");
            }
            // all good continue on

            // Order pairs and parse ELP
            var miningPairsList = _miningPairs.ToList();
            var deviceIds       = miningPairsList.Select(pair => pair.Device.ID);

            _devicesOnPlatform = $"--gpu-platform {openClAmdPlatformNum} -d {string.Join(",", deviceIds)}";


            // if no MinerOptionsPackage fallback to defaults
            if (MinerOptionsPackage == null)
            {
                var ignoreDefaults    = SgminerOptionsPackage.DefaultMinerOptionsPackage.IgnoreDefaultValueOptions;
                var generalParams     = ExtraLaunchParametersParser.Parse(miningPairsList, SgminerOptionsPackage.DefaultMinerOptionsPackage.GeneralOptions, ignoreDefaults);
                var temperatureParams = ExtraLaunchParametersParser.Parse(miningPairsList, SgminerOptionsPackage.DefaultMinerOptionsPackage.TemperatureOptions, ignoreDefaults);
                _extraLaunchParameters = $"{generalParams} {temperatureParams}".Trim();
            }
        }
示例#2
0
        protected override void Init()
        {
            var singleType = MinerToolkit.GetAlgorithmSingleType(_miningPairs);

            _algorithmFirstType = singleType.Item1;
            bool ok = singleType.Item2;

            if (!ok)
            {
                Logger.Info(_logGroup, "Initialization of miner failed. Algorithm not found!");
                throw new InvalidOperationException("Invalid mining initialization");
            }

            var dualType = MinerToolkit.GetAlgorithmDualType(_miningPairs);

            _algorithmSecondType = dualType.Item1;
            ok = dualType.Item2;
            if (!ok)
            {
                _algorithmSecondType = AlgorithmType.NONE;
            }
            // all good continue on

            _orderedMiningPairs = _miningPairs.ToList();
            _orderedMiningPairs.Sort((a, b) => _mappedIDs[a.Device.UUID].CompareTo(_mappedIDs[b.Device.UUID]));
            _devices = string.Join("", _orderedMiningPairs.Select(p => ClaymoreHelpers.GetClaymoreDeviceID(_mappedIDs[p.Device.UUID])));

            if (MinerOptionsPackage != null)
            {
                var ignoreDefaults    = MinerOptionsPackage.IgnoreDefaultValueOptions;
                var generalParams     = ExtraLaunchParametersParser.Parse(_orderedMiningPairs, MinerOptionsPackage.GeneralOptions, ignoreDefaults);
                var temperatureParams = ExtraLaunchParametersParser.Parse(_orderedMiningPairs, MinerOptionsPackage.TemperatureOptions, ignoreDefaults);
                _extraLaunchParameters = $"{generalParams} {temperatureParams}".Trim();
            }
        }
示例#3
0
        protected override void Init()
        {
            var singleType = MinerToolkit.GetAlgorithmSingleType(_miningPairs);

            _algorithmType = singleType.Item1;
            bool ok = singleType.Item2;

            if (!ok)
            {
                Logger.Info(_logGroup, "Initialization of miner failed. Algorithm not found!");
                throw new InvalidOperationException("Invalid mining initialization");
            }

            // Order pairs and parse ELP
            var orderedMiningPairs = _miningPairs.ToList();

            _devices = string.Join(",", _miningPairs.Select(p => _mappedIDs[p.Device.UUID]));
            if (MinerOptionsPackage != null)
            {
                var ignoreDefaults    = MinerOptionsPackage.IgnoreDefaultValueOptions;
                var generalParams     = ExtraLaunchParametersParser.Parse(orderedMiningPairs, MinerOptionsPackage.GeneralOptions, ignoreDefaults);
                var temperatureParams = ExtraLaunchParametersParser.Parse(orderedMiningPairs, MinerOptionsPackage.TemperatureOptions, ignoreDefaults);
                _extraLaunchParameters = $"{generalParams} {temperatureParams}".Trim();
            }
        }
示例#4
0
        protected override void Init()
        {
            var singleType = MinerToolkit.GetAlgorithmSingleType(_miningPairs);

            _algorithmType = singleType.Item1;
            bool ok = singleType.Item2;

            if (!ok)
            {
                Logger.Info(_logGroup, "Initialization of miner failed. Algorithm not found!");
                throw new InvalidOperationException("Invalid mining initialization");
            }
            // all good continue on

            // init command line params parts
            var orderedMiningPairs = _miningPairs.ToList();

            orderedMiningPairs.Sort((a, b) => a.Device.ID.CompareTo(b.Device.ID));
            _devices = string.Join(",", orderedMiningPairs.Select(p => p.Device.ID));
            if (MinerOptionsPackage != null)
            {
                var ignoreDefaults    = MinerOptionsPackage.IgnoreDefaultValueOptions;
                var generalParams     = ExtraLaunchParametersParser.Parse(orderedMiningPairs, MinerOptionsPackage.GeneralOptions, ignoreDefaults);
                var temperatureParams = ExtraLaunchParametersParser.Parse(orderedMiningPairs, MinerOptionsPackage.TemperatureOptions, ignoreDefaults);
                _extraLaunchParameters = $"{generalParams} {temperatureParams}".Trim();
            }
        }
示例#5
0
        protected override void Init()
        {
            var singleType = MinerToolkit.GetAlgorithmSingleType(_miningPairs);

            _algorithmType = singleType.Item1;
            bool ok = singleType.Item2;

            if (!ok)
            {
                Logger.Error(_logGroup, "Initialization of miner failed. Algorithm not found!");
                throw new InvalidOperationException("Invalid mining initialization");
            }
            // check platform id
            var  openClAmdPlatformResult    = MinerToolkit.GetOpenCLPlatformID(_miningPairs);
            var  openClAmdPlatformNum       = openClAmdPlatformResult.Item1;
            bool openClAmdPlatformNumUnique = openClAmdPlatformResult.Item2;

            if (!openClAmdPlatformNumUnique)
            {
                Logger.Error(_logGroup, "Initialization of miner failed. Multiple OpenCLPlatform IDs found!");
                throw new InvalidOperationException("Invalid mining initialization");
            }

            // all good continue on

            // Order pairs and parse ELP
            var orderedMiningPairs = _miningPairs.ToList();

            orderedMiningPairs.Sort((a, b) => a.Device.ID.CompareTo(b.Device.ID));
            var deviceIds = orderedMiningPairs.Select(pair => pair.Device.ID);

            _devicesOnPlatform = $"--gpu-platform {openClAmdPlatformNum} -d {string.Join(",", deviceIds)}";


            if (MinerOptionsPackage != null)
            {
                var ignoreDefaults    = MinerOptionsPackage.IgnoreDefaultValueOptions;
                var generalParams     = ExtraLaunchParametersParser.Parse(orderedMiningPairs, MinerOptionsPackage.GeneralOptions, ignoreDefaults);
                var temperatureParams = ExtraLaunchParametersParser.Parse(orderedMiningPairs, MinerOptionsPackage.TemperatureOptions, ignoreDefaults);
                _extraLaunchParameters = $"{generalParams} {temperatureParams}".Trim();
            }
            else // TODO this one is temp???
            {
                var ignoreDefaults    = DefaultMinerOptionsPackage.IgnoreDefaultValueOptions;
                var generalParams     = ExtraLaunchParametersParser.Parse(orderedMiningPairs, DefaultMinerOptionsPackage.GeneralOptions, ignoreDefaults);
                var temperatureParams = ExtraLaunchParametersParser.Parse(orderedMiningPairs, DefaultMinerOptionsPackage.TemperatureOptions, ignoreDefaults);
                _extraLaunchParameters = $"{generalParams} {temperatureParams}".Trim();
            }
        }
示例#6
0
        public override void InitMiningPairs(IEnumerable <MiningPair> miningPairs)
        {
            // now should be ordered
            _miningPairs = GetSortedMiningPairs(miningPairs);
            //// update log group
            try
            {
                var devs    = _miningPairs.Select(pair => $"{pair.Device.DeviceType}:{pair.Device.ID}");
                var devsTag = $"devs({string.Join(",", devs)})";
                var algo    = _miningPairs.First().Algorithm.AlgorithmName;
                var algoTag = $"algo({algo})";
                _logGroup = $"{_baseTag}-{algoTag}-{devsTag}";
            }
            catch (Exception e)
            {
                Logger.Error(_logGroup, $"Error while setting _logGroup: {e.Message}");
            }

            // init algo, ELP and finally miner specific init
            // init algo
            var(first, second, ok) = MinerToolkit.GetFirstAndSecondAlgorithmType(_miningPairs);
            _algorithmType         = first;
            _algorithmSecondType   = second;
            if (!ok)
            {
                Logger.Info(_logGroup, "Initialization of miner failed. Algorithm not found!");
                throw new InvalidOperationException("Invalid mining initialization");
            }
            // init ELP, _miningPairs are ordered and ELP parsing keeps ordering
            if (MinerOptionsPackage != null)
            {
                var miningPairsList         = _miningPairs.ToList();
                var ignoreDefaults          = MinerOptionsPackage.IgnoreDefaultValueOptions;
                var firstPair               = miningPairsList.FirstOrDefault();
                var optionsWithoutLHR       = MinerOptionsPackage.GeneralOptions.Where(opt => !opt.ID.Contains("lolMiner_mode")).ToList();
                var optionsWithLHR          = MinerOptionsPackage.GeneralOptions.Where(opt => opt.ID.Contains("lolMiner_mode")).ToList();
                var generalParamsWithoutLHR = ExtraLaunchParametersParser.Parse(miningPairsList, optionsWithoutLHR, ignoreDefaults);
                var isDagger             = firstPair.Algorithm.FirstAlgorithmType == AlgorithmType.DaggerHashimoto;
                var generalParamsWithLHR = ExtraLaunchParametersParser.Parse(miningPairsList, optionsWithLHR, !isDagger);
                var modeOptions          = ResolveDeviceMode(miningPairsList, generalParamsWithLHR);
                var generalParams        = generalParamsWithoutLHR + (isDagger ? modeOptions : "");
                var temperatureParams    = ExtraLaunchParametersParser.Parse(miningPairsList, MinerOptionsPackage.TemperatureOptions, ignoreDefaults);
                _extraLaunchParameters = $"{generalParams} {temperatureParams}".Trim();
            }
            // miner specific init
            Init();
        }
示例#7
0
        protected override void Init()
        {
            var singleType = MinerToolkit.GetAlgorithmSingleType(_miningPairs);

            _algorithmType = singleType.Item1;
            bool ok = singleType.Item2;

            if (!ok)
            {
                Logger.Info(_logGroup, "Initialization of miner failed. Algorithm not found!");
                throw new InvalidOperationException("Invalid mining initialization");
            }
            // all good continue on

            // Order pairs and parse ELP
            var orderedMiningPairs = _miningPairs.ToList();

            orderedMiningPairs.Sort((a, b) => a.Device.ID.CompareTo(b.Device.ID));
            _devices = string.Join(",", orderedMiningPairs.Select(p => p.Device.ID));

            var openClAmdPlatformResult = MinerToolkit.GetOpenCLPlatformID(_miningPairs);

            _openClAmdPlatformNum = openClAmdPlatformResult.Item1;
            bool openClAmdPlatformNumUnique = openClAmdPlatformResult.Item2;

            if (!openClAmdPlatformNumUnique)
            {
                Logger.Error(_logGroup, "Initialization of miner failed. Multiple OpenCLPlatform IDs found!");
                throw new InvalidOperationException("Invalid mining initialization");
            }

            for (int i = 0; i < orderedMiningPairs.Count; i++)
            {
                _initOrderMirrorApiOrderUUIDs[i] = orderedMiningPairs[i].Device.UUID;
            }

            if (MinerOptionsPackage != null)
            {
                var ignoreDefaults    = MinerOptionsPackage.IgnoreDefaultValueOptions;
                var generalParams     = ExtraLaunchParametersParser.Parse(orderedMiningPairs, MinerOptionsPackage.GeneralOptions, ignoreDefaults);
                var temperatureParams = ExtraLaunchParametersParser.Parse(orderedMiningPairs, MinerOptionsPackage.TemperatureOptions, ignoreDefaults);
                _extraLaunchParameters = $"{generalParams} {temperatureParams}".Trim();
            }
        }
示例#8
0
        public virtual void InitMiningPairs(IEnumerable <MiningPair> miningPairs)
        {
            // now should be ordered
            _miningPairs = GetSortedMiningPairs(miningPairs);
            // update log group
            try
            {
                var devs    = _miningPairs.Select(pair => $"{pair.Device.DeviceType}:{pair.Device.ID}");
                var devsTag = $"devs({string.Join(",", devs)})";
                var algo    = _miningPairs.First().Algorithm.AlgorithmName;
                var algoTag = $"algo({algo})";
                _logGroup = $"{_baseTag}-{algoTag}-{devsTag}";
            }
            catch (Exception e)
            {
                Logger.Error(_logGroup, $"Error while setting _logGroup: {e.Message}");
            }

            // init algo, ELP and finally miner specific init
            // init algo
            var singleType = MinerToolkit.GetAlgorithmSingleType(_miningPairs);

            _algorithmType = singleType.Item1;
            bool ok = singleType.Item2;

            if (!ok)
            {
                Logger.Info(_logGroup, "Initialization of miner failed. Algorithm not found!");
                throw new InvalidOperationException("Invalid mining initialization");
            }
            // init ELP, _miningPairs are ordered and ELP parsing keeps ordering
            if (MinerOptionsPackage != null)
            {
                var miningPairsList   = _miningPairs.ToList();
                var ignoreDefaults    = MinerOptionsPackage.IgnoreDefaultValueOptions;
                var generalParams     = ExtraLaunchParametersParser.Parse(miningPairsList, MinerOptionsPackage.GeneralOptions, ignoreDefaults);
                var temperatureParams = ExtraLaunchParametersParser.Parse(miningPairsList, MinerOptionsPackage.TemperatureOptions, ignoreDefaults);
                _extraLaunchParameters = $"{generalParams} {temperatureParams}".Trim();
            }
            // miner specific init
            Init();
        }
示例#9
0
        protected override void Init()
        {
            var singleType = MinerToolkit.GetAlgorithmSingleType(_miningPairs);

            _algorithmType = singleType.Item1;
            bool ok = singleType.Item2;

            if (!ok)
            {
                throw new InvalidOperationException("Invalid mining initialization");
            }

            var orderedMiningPairs = _miningPairs.ToList();

            orderedMiningPairs.Sort((a, b) => a.Device.ID.CompareTo(b.Device.ID));
            //TODO this must be implemented
            if (MinerOptionsPackage != null)
            {
                var ignoreDefaults    = MinerOptionsPackage.IgnoreDefaultValueOptions;
                var generalParams     = ExtraLaunchParametersParser.Parse(orderedMiningPairs, MinerOptionsPackage.GeneralOptions, ignoreDefaults);
                var temperatureParams = ExtraLaunchParametersParser.Parse(orderedMiningPairs, MinerOptionsPackage.TemperatureOptions, ignoreDefaults);
                _extraLaunchParameters = $"{generalParams} {temperatureParams}".Trim();
            }
        }
示例#10
0
        public void Parse_Test()
        {
            var device1    = new BaseDevice(DeviceType.NVIDIA, "GPU-device1", "MSI GeForce GTX 1070 Ti", 0);
            var device2    = new BaseDevice(DeviceType.NVIDIA, "GPU-device2", "MSI GeForce GTX 1060 6GB", 1);
            var algorithm1 = new Algorithm("BMiner", AlgorithmType.GrinCuckaroo29);
            var algorithm2 = new Algorithm("BMiner", AlgorithmType.GrinCuckaroo29);
            var options    = new List <MinerOption>
            {
                new MinerOption
                {
                    Type      = MinerOptionType.OptionIsParameter,
                    ID        = "optionParameter",
                    ShortName = "-nofee"
                },
                new MinerOption
                {
                    Type         = MinerOptionType.OptionWithSingleParameter,
                    ID           = "singleParam",
                    ShortName    = "-intensity",
                    DefaultValue = "6"
                },
                new MinerOption
                {
                    Type         = MinerOptionType.OptionWithMultipleParameters,
                    ID           = "multiParam",
                    ShortName    = "--multi-intensity",
                    DefaultValue = "-1",
                    Delimiter    = ","
                },
                new MinerOption
                {
                    Type         = MinerOptionType.OptionWithMultipleParameters,
                    ID           = "multiParam_EqSign",
                    ShortName    = "--multi-power=",
                    DefaultValue = "-1",
                    Delimiter    = ","
                },
            };

            //option is param
            algorithm1.ExtraLaunchParameters = "-nofee";
            var pair1 = new MiningPair
            {
                Device    = device1,
                Algorithm = algorithm1
            };
            var miningPairs = new List <MiningPair>()
            {
                pair1
            };

            var ret = ExtraLaunchParametersParser.Parse(miningPairs, options);
            var exp = " -nofee";

            Assert.AreEqual(ret, exp);

            // Single param
            algorithm1.ExtraLaunchParameters = "-intensity 10";
            pair1 = new MiningPair
            {
                Device    = device1,
                Algorithm = algorithm1
            };
            miningPairs = new List <MiningPair>()
            {
                pair1
            };
            ret = ExtraLaunchParametersParser.Parse(miningPairs, options);
            exp = " -intensity 10";
            Assert.AreEqual(ret, exp);

            algorithm1.ExtraLaunchParameters = "-intensity 10 11";
            pair1 = new MiningPair
            {
                Device    = device1,
                Algorithm = algorithm1
            };
            miningPairs = new List <MiningPair>()
            {
                pair1
            };
            ret = ExtraLaunchParametersParser.Parse(miningPairs, options);
            exp = " -intensity 10";
            Assert.AreEqual(ret, exp);

            // Multi param
            algorithm1.ExtraLaunchParameters = "--multi-intensity 10,11";
            pair1 = new MiningPair
            {
                Device    = device1,
                Algorithm = algorithm1
            };
            miningPairs = new List <MiningPair>()
            {
                pair1
            };
            ret = ExtraLaunchParametersParser.Parse(miningPairs, options);
            exp = " --multi-intensity 10,11";
            Assert.AreEqual(ret, exp);

            // multi param, equal sign
            algorithm1.ExtraLaunchParameters = "--multi-power=10,11";
            pair1 = new MiningPair
            {
                Device    = device1,
                Algorithm = algorithm1
            };
            miningPairs = new List <MiningPair>()
            {
                pair1
            };
            ret = ExtraLaunchParametersParser.Parse(miningPairs, options);
            exp = " --multi-power=10,11";
            Assert.AreEqual(ret, exp);

            //multi param, 1 value
            algorithm1.ExtraLaunchParameters = "--multi-intensity 15";
            pair1 = new MiningPair
            {
                Device    = device1,
                Algorithm = algorithm1
            };
            miningPairs = new List <MiningPair>()
            {
                pair1
            };
            ret = ExtraLaunchParametersParser.Parse(miningPairs, options);
            exp = " --multi-intensity 15";
            Assert.AreEqual(ret, exp);

            //multi param, 1 value others default
            algorithm1.ExtraLaunchParameters = "--multi-intensity 15";
            pair1 = new MiningPair
            {
                Device    = device1,
                Algorithm = algorithm1
            };
            miningPairs = new List <MiningPair>()
            {
                pair1
            };
            ret = ExtraLaunchParametersParser.Parse(miningPairs, options);
            exp = " --multi-intensity 15";
            Assert.AreEqual(ret, exp);

            //multi param, no value
            algorithm1.ExtraLaunchParameters = "--multi-intensity";
            pair1 = new MiningPair
            {
                Device    = device1,
                Algorithm = algorithm1
            };
            miningPairs = new List <MiningPair>()
            {
                pair1
            };
            ret = ExtraLaunchParametersParser.Parse(miningPairs, options);
            exp = "";
            Assert.AreEqual(ret, exp);

            //multi param, 1value, other devices default
            algorithm1.ExtraLaunchParameters = "--multi-intensity 15";
            pair1 = new MiningPair
            {
                Device    = device1,
                Algorithm = algorithm1
            };
            var pair2 = new MiningPair
            {
                Device    = device2,
                Algorithm = algorithm2
            };

            miningPairs = new List <MiningPair>()
            {
                pair1, pair2
            };
            ret = ExtraLaunchParametersParser.Parse(miningPairs, options);
            exp = " --multi-intensity 15,-1";
            Assert.AreEqual(ret, exp);

            //default values
            algorithm1.ExtraLaunchParameters = "";
            pair1 = new MiningPair
            {
                Device    = device1,
                Algorithm = algorithm1
            };
            miningPairs = new List <MiningPair>()
            {
                pair1
            };
            ret = ExtraLaunchParametersParser.Parse(miningPairs, options, true);
            exp = " -nofee -intensity 6 --multi-intensity -1 --multi-power=-1";
            Assert.AreEqual(ret, exp);
        }