Moderator: Andres Valverde
cnchang wrote:Why Engine #1 settings and Engine #2 settings in Winboard menu only allow users to activate debug mode? In Winboard help, it says users are allowed to set each engine's defined options there. Is "Common Engine" the only place to do that for both engines now?
If you are willing to modify UCI2WB and UCCI2WB with another beta to set hash and threads# on those non-compliant engines.
I can test them and list which engine crashes on just receiving that. To be on the safe side, why not consider making this force-to-set-hash-and-threads-by-Winboard as an option, which can be called by an argument, e.g., "-hashthreads"? Therefore, users will have the discretion to invoke it in Edit Engine(or combo box) stage.
BTW, my setting up Shiga's hash&threads, since uci2wb is not triggered to do so, is to modify Shiga.ini and then:
1. start Winboard and load Shiga engine, if Winboard and Shiga are not loaded yet.
2. goes to Winboard>File>New Game, if Shiga engine is already loaded.
Then, the new settings will kick in!
You can see CPU utilization and memory footprint changed accordingly.
The debug checkbox in the Engine Settings dialogs are not for WinBoard's debug mode, but for UCI2WB's debug mode. The nature of adapters is such that (UCI2WB + UCI engine) is a WB engine, (and (WB GUI + UCI2WB) is a UCI GUI). So according toe WinBoard UCI2WB is the engine, and the Engine Settings dialogs serve to set the options of UCI2WB itself, as well as those it relays from the engine. Since Shiga does not report any options, there is nothing to relay, however, so the dialogs might give the wrong impression. Cyclone reports some checkbox options, but ggChess really reports tons of options, so it really has a well-filled Settings dialog.
¢¡-¤©µ¦¦µ+Ð+Ð ...
info initok ...
info Á¦Ã¦-¦Ë+¤¯¦¦-²ú¦2
id name ggChess-UCI-X32_U6_20100716-1-SZ-GG-MAX-6T
id author ãÕÍð+¾ËÐ
option name Hash type spin default 128 min 32 max 1024
option name Clear Hash type check default false
option name MultiPV type spin default 1 min 1 max 10
option name Ponder type check default true
option name Search Depth type spin default 0 min 0 max 128
option name Search Time type spin default 0 min 0 max 3600
option name Threads type spin default 6 min 1 max 8
option name NullMove Pruning type spin default 1 min 1 max 3
option name NullMove Reduction type spin default 2 min 1 max 4
option name Verification Search type spin default 1 min 1 max 3
option name Verification Reduction type spin default 4 min 1 max 6
option name History Pruning type check default true
option name History Threshold type spin default 55 min 0 max 100
option name History Pruning Depth type spin default 4 min 1 max 6
option name Futility Pruning type check default true
option name Futility Margin type spin default 100 min 0 max 500
option name Extended Futility Margin type spin default 300 min 0 max 900
option name Futility Depth type spin default 2 min 1 max 6
option name Delta Pruning type check default true
option name Delta Margin type spin default 80 min 0 max 500
option name Quiescence Check Plies type spin default 1 min 0 max 2
option name Material type spin default 100 min 0 max 400
option name Piece Activity type spin default 100 min 0 max 400
option name Piece Square Activity type spin default 100 min 0 max 400
option name King Safety type spin default 100 min 0 max 400
option name Pawn Structure type spin default 100 min 0 max 400
option name Passed Pawns type spin default 100 min 0 max 400
option name Gaga Lazy Eval type check default true
option name Gaga Lazy Eval Margin type spin default 200 min 0 max 900
option name Gaga Exchange Bonus type spin default 20 min 0 max 100
option name Gaga King Safety type check default false
option name Gaga King Safety Margin type spin default 1550 min 500 max 3000
option name Gaga Extended History Pruning type check default false
option name Gaga History Threshold type spin default 30 min 0 max 100
option name UCI_EngineAbout type string default ggChess by lgl, http://www.ggchess.com
uciok
info Á¦Ã¦-¦Ë+¤¯¦¦-²ú¦1
info initend
I uploaded a new UCI2WB to http://hgm.nubati.net/UCI2WB.exe . This looks for a file named 'DefectiveEngineOptions.ini' in the engine folder, and pretends that what is in there was sent by the engne. So you could try to make a file with
option name Hash type spin default 512 min 16 max 512
and variout threads options.
My suggestion is just let GUI take control sending setoption commands doesn't matter if engine announces its options or if there is an associated ini at all.
If you worry about the unknown consequences or Winboard's stability, you can always make this GUI-force-mode enabled/activated by argument only.
That way users will still have the discretion to choose what they want.
H.G.Muller wrote:The idea is that ou would move away the Shiga.ini, so it no longer overrules everything, and then create a file named DefectiveEngineOptions.ini in the same folder as Shiga.exe containing the options we want to fake for the engine. Like
option name Hash type spin default 64 min 16 max 512
option name terads type spin default 2 min 1 max 8
option name Ponder type check default true
The presence of a file DefectiveEngineOptions.ini should not affect Shiga's operation diretly; Shiga will simply ignore it like any file it does not know.
option name Hash type spin default 64 min 16 max 512
option name Threads type spin default 2 min 1 max 8
option name Ponder type check default true
cnchang wrote:Ponder and threads option show up in Engine #1(Shiga) settings, but no hash size option there.
Thus, I tried 64MB/1core, 128/2, and 256/4 in GUI Common Engine.
Shiga Hash size seems under full control of WB GUI, but threads number stay at 1, not even the default defined by DefectiveEngineOptions.ini.
Maybe the syntax for "threads" need some check up.
For ggchess UCI engine, after I put DefectiveEngineOptions.ini in, it stays at 128/4 in all GUI 64MB/1core, 128/2, and 256/4 conditions.
Bugchess, a UCCI, came up 48/1 in all GUI settings.
Bugcchess has no ini or any other files in the same folder with the engine, while ggchess has a bin file.
In BHGUI, I can use GUI to set 64/1, 128/2, and 4/256, and all the above mentioned UCI and UCCI engines will follow the rule of BHGUI.
The only thing I need to do is removing(or renaming) Shiga.ini.
Your WB approach is delicate, users can set each engine's options respectively in a custom made fashion.
I think BHGUI just sends setoptions to them and believe they should listen as UCI or UCCI engines, while Shiga.ini is the earmuff to be replaced.
Of course, some engines, like Elephant Eye and KOU, will follow BHGUI's hash size settings but simply ignore threads# settings because of the built-in restraint, but no engine crashes.
BTW, this new UCI2WB.exe will change the playing engine's name in WB Engine Output window from Shiga to UCI2WB. ggchess is fine.
If you think that sending some fixed set of option commands to all engines is the solution, then this is fully supported by the current scheme: users can simply put the same DefectiveEngineOptions.ini in all their engine folders to fake those options for the engine.
cnchang wrote:Quite some engines that can't be configured by WBGUI may still be considered UCI/UCCI compliant even though they may not have all options implemented. BHGUI took them as UCI/UCCI compliant engines by default w/wo seeing their options announced, nonetheless it has no difficulty to use all their implemented features.
I really can't say those engines are not UCI/UCCI compliant because they responded to setoptions command properly and ignored those setoptions commands they didn't implement or understand. Isn't that what UCI originally asked for? I have not found UCI strictly asks ENGINES MUST FIRST ANNOUNCE THEIR IMPLEMENTED OPTIONS BEFORE PUT THOSE OPTIONS INTO USE.
* option
This command tells the GUI which parameters can be changed in the engine.
This should be sent once at engine startup after the "uci" and the "id" commands
if any parameter can be changed in the engine.
The GUI should parse this and build a dialog for the user to change the settings.
Note that not every option needs to appear in this dialog as some options like
"Ponder", "UCI_AnalyseMode", etc. are better handled elsewhere or are set automatically.
If you think that sending some fixed set of option commands to all engines is the solution, then this is fully supported by the current scheme: users can simply put the same DefectiveEngineOptions.ini in all their engine folders to fake those options for the engine.
My tests on that scheme can't make one UCI engine work, they either failed on threads# or failed on both(hash & threads#). Do you find it work on any?
- Code: Select all
* option
This command tells the GUI which parameters can be changed in the engine.
This should be sent once at engine startup after the "uci" and the "id" commands
if any parameter can be changed in the engine.
The GUI should parse this and build a dialog for the user to change the settings.
Note that not every option needs to appear in this dialog as some options like
"Ponder", "UCI_AnalyseMode", etc. are better handled elsewhere or are set automatically.
Did you have any success in setting the number of threads with the same option as BHGUI does? It should be logically impossible for the scheme not to work if you use the same option name as BHGUI does. The engine cannot know which GUI it is running under. So if you make UCI2WB sends the same commands to it as BHGUI does it simply should work. You must have used the wrong option names if it does not work for you.
cnchang wrote:Where is this paragraph extracted from?
If Hash is not mentioned as "not need to appear in this dialog", why doesn't it appear on WB's Engine #1 settings dialog window?
If "Ponder" needs not to appear, why "Ponder" option appear in that dialog window in the DefectiveEngineOptions.ini test?
I'd like to comprehend the reasonings behind those UCI rules. I also wonder why UCI doesn't specify the standard name for threads#. What is WBGUI's default name for threads#? If there is no standard/default at all, how does WB parser know what to wait for?
No. No engine will work on setting threads# in the DefectiveEngineOptions scheme. BHGUI works successfully on setting threads# with most engines, except some older ones, because
(1) it will not block users' preferred settings due to the "confess first" issue.
(2) it found the common language for setting threads#. Maybe BH team has found the standard name for that.
I didn't have to use any option names manually. Why should I? I just use BHGUI to configure hash & threads#.
* option
This command tells the GUI which parameters can be changed in the engine.
This should be sent once at engine startup after the "uci" and the "id" commands
if any parameter can be changed in the engine.
The GUI should parse this and build a dialog for the user to change the settings.
Note that not every option needs to appear in this dialog as some options like
"Ponder", "UCI_AnalyseMode", etc. are better handled elsewhere or are set automatically.
If the user wants to change some settings, the GUI will send a "setoption" command to the engine.
Note that the GUI need not send the setoption command when starting the engine for every option if
it doesn't want to change the default value.
Return to Winboard and related Topics
Users browsing this forum: Google [Bot] and 16 guests