示例#1
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);
        }
示例#3
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));
            }
        }
示例#4
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);
        }