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); }
/// <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)); } }
/// <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); }