/// <summary> /// Dumps GPU information and runs benchmarks. /// </summary> /// <returns>Sum of NPS across all GPUs</returns> public static (int CountGPU, int SumNPS) DumpGPUBenchmark() { Console.WriteLine(); Console.WriteLine("-----------------------------------------------------------------------------------"); Console.WriteLine($"GPU BENCHMARK (benchmark net: {CeresUserSettingsManager.Settings.DefaultNetworkSpecString})"); Console.WriteLine(); Console.WriteLine(NVML.InfoDescriptionHeaderLine1 + " NPS 1 NPS Batch"); Console.WriteLine(NVML.InfoDescriptionHeaderLine2 + " ----- ---------"); int sumNPS = 0; int countGPU = 0; foreach (NVMLGPUInfo info in NVML.GetGPUsInfo()) { NNEvaluatorDef evaluatorDef = NNEvaluatorDef.FromSpecification(CeresUserSettingsManager.Settings.DefaultNetworkSpecString, "GPU:" + info.ID.ToString()); NNEvaluator evaluator = NNEvaluatorFactory.BuildEvaluator(evaluatorDef); (float npsSingletons, float npsBigBatch, _) = NNEvaluatorBenchmark.EstNPS(evaluator, false, 512, true, 3); Console.WriteLine(NVML.GetInfoDescriptionLine(info) + $" {npsSingletons,6:N0} { npsBigBatch,10:N0}"); countGPU++; sumNPS += (int)npsBigBatch; evaluator.Dispose(); } return(countGPU, sumNPS); }
public void Dispose() { evaluator1?.Dispose(); evaluator2?.Dispose(); evaluatorSecondary?.Dispose(); evaluator1 = null; evaluator2 = null; evaluatorSecondary = null; }