Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 2
0
        public void Dispose()
        {
            evaluator1?.Dispose();
            evaluator2?.Dispose();
            evaluatorSecondary?.Dispose();

            evaluator1         = null;
            evaluator2         = null;
            evaluatorSecondary = null;
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Constructor for a NN evaluator (either local or remote) with specified parameters.
        /// </summary>
        /// <param name="paramsNN"></param>
        /// <param name="saveToCache"></param>
        /// <param name="instanceID"></param>
        /// <param name="lowPriority"></param>
        public LeafEvaluatorNN(NNEvaluatorDef evaluatorDef, NNEvaluator evaluator,
                               bool saveToCache,
                               bool lowPriority,
                               PositionEvalCache cache,
                               Func <MCTSIterator, int> batchEvaluatorIndexDynamicSelector)
        {
            rawPosArray = posArrayPool.Rent(NNEvaluatorDef.MAX_BATCH_SIZE);

            EvaluatorDef = evaluatorDef;
            SaveToCache  = saveToCache;
            LowPriority  = lowPriority;
            Cache        = cache;
            this.BatchEvaluatorIndexDynamicSelector = batchEvaluatorIndexDynamicSelector;

            Batch = new EncodedPositionBatchFlat(EncodedPositionType.PositionOnly, NNEvaluatorDef.MAX_BATCH_SIZE);

            if (evaluatorDef.Location == NNEvaluatorDef.LocationType.Local)
            {
                localEvaluator = evaluator;// isEvaluator1 ? Params.Evaluator1 : Params.Evaluator2;
            }
            else
            {
                throw new NotImplementedException();
            }

            // TODO: auto-estimate performance
#if SOMEDAY
            for (int i = 0; i < 10; i++)
            {
//        using (new TimingBlock("benchmark"))
                {
                    float[] splits = WFEvalNetBenchmark.GetBigBatchNPSFractions(((WFEvalNetCompound)localEvaluator).Evaluators);
                    Console.WriteLine(splits[0] + " " + splits[1] + " " + splits[2] + " " + splits[3]);
                    (float estNPSSingletons, float estNPSBigBatch) = WFEvalNetBenchmark.EstNPS(localEvaluator);
                    Console.WriteLine(estNPSSingletons + " " + estNPSBigBatch);
                }
            }
#endif
        }
Ejemplo n.º 4
0
 /// <summary>
 /// If this evaluator produces the same output as another specified evaluator.
 /// </summary>
 /// <param name="evaluator"></param>
 /// <returns></returns>
 public override bool IsEquivalentTo(NNEvaluator evaluator)
 {
     return(evaluator is NNEvaluatorEngineONNX &&
            ((NNEvaluatorEngineONNX)evaluator).EngineNetworkID == EngineNetworkID);
 }