Ejemplo n.º 1
0
 private void ProcessWeightsFile(string value)
 {
     if (taskSearchCurrentlyExecuting != null)
     {
         OutStream.WriteLine("Cannot change weights while search is running.");
     }
     else
     {
         if (value == null || value == "")
         {
             OutStream.WriteLine("Network file name expected");
         }
         else
         {
             if (EvaluatorDef != null && EvaluatorDef.Nets[0].Net.NetworkID.ToLower() == value.ToLower())
             {
                 OutStream.WriteLine($"Specified network file is already {value}");
             }
             else if (CeresEngine != null)
             {
                 OutStream.WriteLine("Implementation limitation: cannot modify weights file after initialization");
             }
             else
             {
                 NetworkSpec = new NNNetSpecificationString(value);
                 CreateEvaluator();
             }
         }
     }
 }
Ejemplo n.º 2
0
        public static NNEvaluatorDef FromSpecification(string netSpecification, string deviceSpecification)
        {
            NNNetSpecificationString     netObj    = new NNNetSpecificationString(netSpecification);
            NNDevicesSpecificationString deviceObj = new NNDevicesSpecificationString(deviceSpecification);

            return(new NNEvaluatorDef(netObj.ComboType, netObj.NetDefs, deviceObj.ComboType, deviceObj.Devices));
        }
        /// <summary>
        /// Prompts user to enter certain user settings via Console
        /// and writes back to Ceres.json.
        /// </summary>
        public static void DoSetupInitialize()
        {
            string dirLC0Binaries       = GetDirectoryString("  LC0 binaries (with plug-in Ceres.DLL) : ", true);
            string dirLC0Networks       = GetDirectoryString("  LC0 network weights files             : ");
            string defaultNetworkString = GetString("  Default network specification (e.g. \"LC0:703810\")                    : ",
                                                    s => NNNetSpecificationString.IsValid(s));
            string defaultDeviceString = GetString("  Default device specification (e.g. \"GPU:0\")                          : ",
                                                   s => NNDevicesSpecificationString.IsValid(s));

            settings = new CeresUserSettings();
            settings.DirLC0Binaries           = dirLC0Binaries;
            settings.DirLC0Networks           = dirLC0Networks;
            settings.DefaultNetworkSpecString = defaultNetworkString;
            settings.DefaultDeviceSpecString  = defaultDeviceString;
            SaveToDefaultFile();
            LoadFromDefaultFile(); // this cause directory registration

            Console.WriteLine();
            ConsoleUtils.WriteLineColored(ConsoleColor.Cyan, "NEW CONTENTS OF " + CeresUserSettingsManager.DefaultCeresConfigFileName);
            Console.WriteLine("(additional changes can be made by editing in a text editor or using SETOP command in Ceres");

            string fileContext = File.ReadAllText(CeresUserSettingsManager.DefaultCeresConfigFileName);

            Console.WriteLine(fileContext);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Construtor.
        /// </summary>
        /// <param name="evaluatorDef"></param>
        /// <param name="inStream"></param>
        /// <param name="outStream"></param>
        /// <param name="searchFinishedEvent"></param>
        public UCIManager(NNNetSpecificationString networkSpec,
                          NNDevicesSpecificationString deviceSpec,
                          TextReader inStream = null, TextWriter outStream = null,
                          Action <MCTSManager> searchFinishedEvent = null,
                          bool disablePruning      = false,
                          string uciLogFileName    = null,
                          string searchLogFileName = null)
        {
            InStream            = inStream ?? Console.In;
            OutStream           = outStream ?? Console.Out;
            SearchFinishedEvent = searchFinishedEvent;

            NetworkSpec = networkSpec;
            DeviceSpec  = deviceSpec;
            CreateEvaluator();

            if (disablePruning)
            {
                futilityPruningDisabled = true;
            }

            this.searchLogFileName = searchLogFileName;

            // Possibly all UCI input/output to log file.
            if (uciLogFileName != null)
            {
                uciLogWriter = new StreamWriter(new FileStream(uciLogFileName, FileMode.Append, FileAccess.Write));
            }
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Returns the network and device arguments string matching specified NNEvaluatorDef.
        /// </summary>
        /// <param name="evaluatorDef"></param>
        /// <returns></returns>
        static string ExtraArgsForEvaluator(NNEvaluatorDef evaluatorDef)
        {
            string netSpecString = NNNetSpecificationString.ToSpecificationString(evaluatorDef.NetCombo, evaluatorDef.Nets);

            if (!netSpecString.Contains("Network="))
            {
                throw new Exception("Unsupported network specification");
            }

            string deviceSpecString = NNDevicesSpecificationString.ToSpecificationString(evaluatorDef.DeviceCombo, evaluatorDef.Devices);

            if (!deviceSpecString.Contains("Device="))
            {
                throw new Exception("Unsupported device specification");
            }
            return("UCI " + netSpecString + " " + deviceSpecString);
        }