private async Task BenchmarkAlgorithm(AlgorithmContainer algo, CancellationToken stop) { var miningLocation = StratumService.Instance.SelectedOrFallbackServiceLocationCode().miningLocationCode; // TODO hidden issue here if our market is not available we will not be able to execute benchmarks // unable to benchmark service locations are not operational if (miningLocation == null) { return; } using (var powerHelper = new PowerHelper(algo.ComputeDevice)) { var plugin = algo.PluginContainer; var miner = plugin.CreateMiner(); var miningPair = new NHM.MinerPlugin.MiningPair { Device = algo.ComputeDevice.BaseDevice, Algorithm = algo.Algorithm }; // check ethlargement var miningPairs = new List <NHM.MinerPlugin.MiningPair> { miningPair }; EthlargementIntegratedPlugin.Instance.Start(miningPairs); miner.InitMiningPairs(miningPairs); // fill service since the benchmark might be online. DemoUser.BTC must be used miner.InitMiningLocationAndUsername(miningLocation, DemoUser.BTC); powerHelper.Start(); algo.ComputeDevice.State = DeviceState.Benchmarking; var result = await miner.StartBenchmark(stop, PerformanceType); if (stop.IsCancellationRequested) { return; } algo.IsReBenchmark = false; //EthlargementIntegratedPlugin.Instance.Stop(miningPairs); // TODO check stopping var power = powerHelper.Stop(); if (result.Success || result.AlgorithmTypeSpeeds?.Count > 0) { var ids = result.AlgorithmTypeSpeeds.Select(ats => ats.type).ToList(); var speeds = result.AlgorithmTypeSpeeds.Select(ats => ats.speed).ToList(); algo.Speeds = speeds; algo.PowerUsage = power; ConfigManager.CommitBenchmarksForDevice(algo.ComputeDevice); } else { // mark it as failed algo.LastBenchmarkingFailed = true; // add new failed list _benchmarkFailedAlgo.Add(algo.AlgorithmName); algo.SetBenchmarkError(result.ErrorMessage); } } }
private async Task BenchmarkAlgorithm(AlgorithmContainer algo, CancellationToken stop) { using (var powerHelper = new PowerHelper(algo.ComputeDevice)) { var plugin = algo.PluginContainer; var miner = plugin.CreateMiner(); var miningPair = new NHM.MinerPlugin.MiningPair { Device = algo.ComputeDevice.BaseDevice, Algorithm = algo.Algorithm }; // check ethlargement var miningPairs = new List <NHM.MinerPlugin.MiningPair> { miningPair }; EthlargementIntegratedPlugin.Instance.Start(miningPairs); miner.InitMiningPairs(miningPairs); // fill service since the benchmark might be online. DemoUser.BTC must be used miner.InitMiningLocationAndUsername(StratumService.Instance.SelectedServiceLocation, DemoUser.BTC); powerHelper.Start(); algo.ComputeDevice.State = DeviceState.Benchmarking; var result = await miner.StartBenchmark(stop, PerformanceType); if (stop.IsCancellationRequested) { return; } algo.IsReBenchmark = false; //EthlargementIntegratedPlugin.Instance.Stop(miningPairs); // TODO check stopping var power = powerHelper.Stop(); if (result.Success || result.AlgorithmTypeSpeeds?.Count > 0) { var ids = result.AlgorithmTypeSpeeds.Select(ats => ats.type).ToList(); var speeds = result.AlgorithmTypeSpeeds.Select(ats => ats.speed).ToList(); algo.Speeds = speeds; algo.PowerUsage = power; // set status to empty string it will return speed BenchmarkManager.SetCurrentStatus(algo.ComputeDevice, algo, ""); ConfigManager.CommitBenchmarksForDevice(algo.ComputeDevice); } else { // mark it as failed algo.LastBenchmarkingFailed = true; // add new failed list _benchmarkFailedAlgo.Add(algo.AlgorithmName); algo.SetBenchmarkError(result.ErrorMessage); BenchmarkManager.SetCurrentStatus(algo.ComputeDevice, algo, result.ErrorMessage); } } }
} = BenchmarkPerformanceType.Standard; // TODO TEMP private async Task <object> BenchmarkAlgorithm(AlgorithmContainer algo, CancellationToken stop) { if (algo == null) { Logger.Error("BenchmarkingComputeDeviceHandler.BenchmarkNextAlgorithm", $"TakeNextAlgorithm returned null"); return(false); } bool ret = false; var miningPairs = new List <MiningPair> { algo.ToMiningPair() }; try { algo.IsBenchmarking = true; using (var powerHelper = new PowerHelper(algo.ComputeDevice)) { var plugin = algo.PluginContainer; var miner = plugin.CreateMiner(); GPUProfileManager.Instance.Start(miningPairs); miner.InitMiningPairs(miningPairs); // fill service since the benchmark might be online. DemoUser.BTC must be used miner.InitMiningLocationAndUsername("auto", DemoUser.BTC); powerHelper.Start(); algo.ComputeDevice.State = DeviceState.Benchmarking; var result = await miner.StartBenchmark(stop, BenchmarkManagerState.Instance.SelectedBenchmarkType); GPUProfileManager.Instance.Stop(miningPairs); if (stop.IsCancellationRequested) { return(false); } algo.IsReBenchmark = false; var power = powerHelper.Stop(); ret = result.Success || result.AlgorithmTypeSpeeds?.Count > 0; if (ret) { algo.Speeds = result.AlgorithmTypeSpeeds.Select(ats => ats.speed).ToList(); algo.PowerUsage = power; ConfigManager.CommitBenchmarksForDevice(algo.ComputeDevice); } else { // mark it as failed algo.LastBenchmarkingFailed = true; algo.SetBenchmarkError(result.ErrorMessage); } } } finally { GPUProfileManager.Instance.Stop(miningPairs); algo.ClearBenchmarkPending(); algo.IsBenchmarking = false; } return(ret); }
} = BenchmarkPerformanceType.Standard; // TODO TEMP private async Task <object> BenchmarkAlgorithm(AlgorithmContainer algo, CancellationToken stop) { if (algo == null) { Logger.Error("BenchmarkingComputeDeviceHandler.BenchmarkNextAlgorithm", $"TakeNextAlgorithm returned null"); return(false); } // TODO here you got shity state var miningLocation = StratumService.Instance.SelectedOrFallbackServiceLocationCode().miningLocationCode; // TODO hidden issue here if our market is not available we will not be able to execute benchmarks // unable to benchmark service locations are not operational if (miningLocation == null) { return(false); } bool ret = false; var miningPairs = new List <MiningPair> { algo.ToMiningPair() }; try { algo.IsBenchmarking = true; using (var powerHelper = new PowerHelper(algo.ComputeDevice)) { var plugin = algo.PluginContainer; var miner = plugin.CreateMiner(); // check ethlargement EthlargementIntegratedPlugin.Instance.Start(miningPairs); miner.InitMiningPairs(miningPairs); // fill service since the benchmark might be online. DemoUser.BTC must be used miner.InitMiningLocationAndUsername(miningLocation, DemoUser.BTC); powerHelper.Start(); algo.ComputeDevice.State = DeviceState.Benchmarking; var result = await miner.StartBenchmark(stop, PerformanceType); EthlargementIntegratedPlugin.Instance.Stop(miningPairs); if (stop.IsCancellationRequested) { return(false); } algo.IsReBenchmark = false; var power = powerHelper.Stop(); ret = result.Success || result.AlgorithmTypeSpeeds?.Count > 0; if (ret) { algo.Speeds = result.AlgorithmTypeSpeeds.Select(ats => ats.speed).ToList(); algo.PowerUsage = power; ConfigManager.CommitBenchmarksForDevice(algo.ComputeDevice); } else { // mark it as failed algo.LastBenchmarkingFailed = true; algo.SetBenchmarkError(result.ErrorMessage); } } } finally { EthlargementIntegratedPlugin.Instance.Stop(miningPairs); algo.ClearBenchmarkPending(); algo.IsBenchmarking = false; } return(ret); }