Winboard frustrations

Discussion of anything and everything relating to chess playing software and machines.

Moderators: hgm, Rebel, chrisw

User avatar
Werner
Posts: 2872
Joined: Wed Mar 08, 2006 10:09 pm
Location: Germany
Full name: Werner Schüle

Winboard frustrations

Post by Werner »

I tried now 2 days to use Winboard (4.8.0) for my tests.
I found no solution for following issues:

a) engine names like Naum 4.6 x64.exe are not accepted (old DOS restrictions? - I have hundreds of such names)
b) for testing I use 512MB hash for 1CPU testing and 2048MB for 4CPU testing:
There are no Windows where I can make the Inputs for different hash sizes and CPU sizes and rename the engine after a Change, as I can do it in Arena or Shredder. And I normally use the same engines for both installations. Here Winboard overwrites the Settings.
e.g. I tried to install the uci engines Naum 4.6 x64 1CPU and Naum 4.6 x64 4CPU. In this case the PG file is overwritten: Naum_4.6.4.ini. The files do not contain all Settings:

[PolyGlot]
EngineCommand=naum1c46x64.exe
EngineDir=C:\Users\Agando\Arena\Engines\Naum4\naum4_6_1CPU
[Engine]
Hash=1024
NalimovCache=16
MaxThreads=4

or
[PolyGlot]
EngineCommand=naum4c46x64.exe
EngineDir=C:\Users\Agando\Arena\Engines\Naum4\naum4_6_4CPU
[Engine]
Hash=2048
NalimovCache=16
OwnBook=false
EnableBookLearning=false
..no CPU Setting

I think I have Problem with the common engine Settings here (and I renamed the engine Name to get 2 different pg files…).

Here I stopped the tests, as i do not want to rename hundreds of engines and make hundreds of new Folders.

BTW: with only 1CPU engines I managed to make a Tournament - much easier as it was with older wb versions.
I found some entries in the wb Forum with newer versions 4.9.1, but I found no download.

Perhaps there are easy Solutions I did not see?
Werner
Ferdy
Posts: 4833
Joined: Sun Aug 10, 2008 3:15 pm
Location: Philippines

Re: Winboard frustrations

Post by Ferdy »

Werner wrote: Thu Mar 07, 2019 12:02 pm I tried now 2 days to use Winboard (4.8.0) for my tests.
I found no solution for following issues:

a) engine names like Naum 4.6 x64.exe are not accepted (old DOS restrictions? - I have hundreds of such names)
I don't have Naum 4.6 x64.exe, but if I rename stockfish 10.exe to Naum 4.6 x64.exe and set it up in wb 4.8.0b as uci engine, it would work just fine.

Winboard 4.9.1 is at http://www.open-aurec.com/wbforum/viewt ... 19&t=53727
User avatar
Werner
Posts: 2872
Joined: Wed Mar 08, 2006 10:09 pm
Location: Germany
Full name: Werner Schüle

Re: Winboard frustrations

Post by Werner »

Thanks for the answer,
yes Stockfish loads here too, but not Naum 4.6 x64 - must be another reason; but rename in naum_4.6_x64.exe helps.
I get the Error: Polyglot: pipex_exit(): naum 4.6 x64.exe: child exited unexpectedly.
Werner
User avatar
hgm
Posts: 27809
Joined: Fri Mar 10, 2006 10:06 am
Location: Amsterdam
Full name: H G Muller

Re: Winboard frustrations

Post by hgm »

Do I understand correctly that you want to play 'hash-size-odds' games, where one player has different hash size than the other? That is indeed not a standard option in WinBoard. The same holds for the number of cores.

The work-around for doing such things is to overrule the WinBoard settings by installing the engine with an extra WinBoard option

/firstInitString="memory 2048\ncores 4\nnew\n"

This would make that that engine always use 2048MB hash and 4 cores, no matter what values were set for the common engine parameters.

If you don't want other settings to be different, there is no need for the engines to have different Polyglot ini files. You just specify a different nickname while registering the engine, and a different initString option. If you ticked the UCI checkbox when registering the engine (or explicitly specified the -fUCI option), WinBoard will use a default name for the polyglot ini file derived from the name of the engine executable. In hindsight it would perhaps have been smarter to derive this from the nickname of the engine, if one is specified. Then each copy of the engine (e.g. installed with different WinBoard options) would have had its own, private settings file. As it is they would all share the settings. (But they would still each have their own 'extra WinBoard options', such as the initString, or timeOdds.)

BTW, if you are keen on editing ini files, you can always replace the polyglot.exe by an old one that does not support the WB protocol memory, cores and option features. Then the GUI settings will always be ignored, and you can control the engines purely through the Polyglot ini files.

As to the problem with spaces in the filename, I am a bit puzzled; as Ferdy also points out this should not be a problem: WinBoard would automatically quote the filename you specified for the engine executable or directory, when it passes it to Polyglot. It even takes care to use the right kind of quotes when the name itself already contains quotes.

If you really want to register different versions of the same engine executable with different settings of the options that appear in the engine's Settings dialog (note that hash sixe and number of threads are not amongst those), they would have to use different polyglot.ini files to store their settings, and so at least one of those can then not use the default method for naming the ini file. This makes the procedure a bit more cumbersome, because you cannot simply tick 'UCI' (which triggers the default method), but will have to invoke Polyglot explicitly. The simplest procedure is probably this:

1) load the engine you want to clone
2) open its Engine Settings dialog; the Polyglot options should also be in there
3) change the name of the Polyglot settings file to one you want to use for this engine
4) press Polyglot Save (this creates the polyglot.ini file with the specified name and the current option settings)
5) open the Load Engine dialog to register the 'clone'
6) as engine command, specify: polyglot.exe
7) as command-line arguments, specify the pathname of the ini file you just created

For future versions of WinBoard it might be an idea to let an obviously invalid value for the common hash size or number of CPUs (like 0 or -1) 'decouple' these parameters from the GUI, and make controls for those appear in the settings dialog of the individual engines.
User avatar
Werner
Posts: 2872
Joined: Wed Mar 08, 2006 10:09 pm
Location: Germany
Full name: Werner Schüle

Re: Winboard frustrations

Post by Werner »

Hi,
thanks for the answer.
What I want is the same procedure I use in Shredder or Arena.
There is 1 engine.exe in the engines folder.
I install it with 1CPU and 256 MB hash and with 4CPU and 2048MB hash under different names.

For the Tests in most cases both engines have 1CPU or 2CPU or 4CPU. Only in seldom cases when the 1CPU engine is so strong that we have only a view engines with similar strength - we use the stronger 4CPU Version as Opponent. This is no problem in a tournament inside Shredder or Arena.

Sorry, your version works for me not in Winboard, even when I edit polyglot.ini (perhaps it is my fault...)
BTW: do you really mean this:
7) as command-line arguments, specify the pathname of the ini file you just created (the path only is not accepted).

I think, the Problems come from settings in the common engine. The hash size here and the max CPU overwrite the Settings in polyglot ini. I am not able to delete these settings - a number must be inside.

Perhaps in future Version of Winboard you let us sprecify all uci Options of the engine during Installation ?

best wishes
Werner
Werner
User avatar
hgm
Posts: 27809
Joined: Fri Mar 10, 2006 10:06 am
Location: Amsterdam
Full name: H G Muller

Re: Winboard frustrations

Post by hgm »

I don't understand what you mean by "the path only is not accepted". What I meant is that you could have created the Polyglot ini file for the clone in _PG\naum2.ini, and in that case you would have to write that in full in the 'command-line arguments' field.

What exactly does "does not work" mean? You get an error popup? WinBoard crashes? Polyglot crashes? I am not even sure what to try to accomplish that did not work. Run an engine with spaces in its name? Run an engine with 4 cores while the common Max CPU is at 1? Have two copies of an engine with different private settings?

And yes, the Common Settings are the problem, as they are indeed common settings, and you don't want common settings. But surely running it with /firstInitString="cores 4\nnew\n" should overrule that on an engine by engine basis?
Ferdy
Posts: 4833
Joined: Sun Aug 10, 2008 3:15 pm
Location: Philippines

Re: Winboard frustrations

Post by Ferdy »

Werner wrote: Thu Mar 07, 2019 7:06 pm Hi,
thanks for the answer.
What I want is the same procedure I use in Shredder or Arena.
There is 1 engine.exe in the engines folder.
I install it with 1CPU and 256 MB hash and with 4CPU and 2048MB hash under different names.
Try registering the engine like below as suggested by HGM.

Winboard 4.8.0b
Engine > Load First Engine ...

And you will get this box.
Image

And then Press OK button.

Save it.
Options > Save Settings Now

Sample game.
[Event "Computer Chess Game"]
[Site "Home"]
[Date "2019.03.08"]
[Round "1"]
[White "Andscacs 0.95 x64 4CPU"]
[Black "Andscacs 0.95 x64 1CPU"]
[Result "*"]
[TimeControl "60+1"]
[Annotator "1. +0.40 1... -0.36"]

1. e4 {+0.40/17} e6 {-0.36/19 5} 2. d4 {+0.33/19 6} d5 {-0.31/18 1.7} 3.
exd5 {+0.20/19 1.9} exd5 {-0.20/19 2.3} 4. Nf3 {+0.19/19 2.6} Nf6
{-0.25/18 1.9} 5. Nc3 {+0.27/19 2.7} Bd6 {-0.12/19 2.9}
*
User avatar
hgm
Posts: 27809
Joined: Fri Mar 10, 2006 10:06 am
Location: Amsterdam
Full name: H G Muller

Re: Winboard frustrations

Post by hgm »

Perhaps some explanation is in order:

I never bothered to add controls to the WinBoard menus to implement hash-odds or core-odds, because
1) I couldn't imagine anyone would want to do that
2) This was already possible in the old situation, with Polyglots that did not support the WB commands to set hash size and number of cores; the challenge was to provide a mechanism to have the GUI control that instead of an obscure adapter
3) It would always remain possible to do this in text form though specifying an initString option, as explained above.

OTOH I very often encountered the situation where I wanted to change hash size of all engines, because I would switch between doing analysis with a single engine running, run a simple match between two engines, or run a tournament concurrently, with several games going on in parallel, and would have to divide up the available memory between what I was running. It was very inconvenient if I then had to change that in the settings of every engine every time. So it seemed logical to make hash and cores settings controlled by a single GUI setting, so that they could be changed for all engines at the same time. This seemed the mainstream use case, and for the rare specialist application there would always be the initString kludge to regain absolute control over individual engine instances.

This also fitted nicely with the general philosophy behind the WinBoard design: make bad things difficult to do, so that noob users wouldn't accidentally switch them on.
User avatar
Werner
Posts: 2872
Joined: Wed Mar 08, 2006 10:09 pm
Location: Germany
Full name: Werner Schüle

Re: Winboard frustrations

Post by Werner »

Ferdy wrote: Fri Mar 08, 2019 4:44 am Try registering the engine like below as suggested by HGM.
Winboard 4.8.0b
Engine > Load First Engine ...
And you will get this box.
Image
And then Press OK button.
Save it.
Options > Save Settings Now
Thanks Ferdy,
this helped me to see what I did not understand correctly. So with this help and the other one from Winboard Forum:

"The best that I could do is edit the winboard.ini file and put it,

/egtFormats={syzygy:C:\chess\syzygy,gaviota:C:\chess\gaviota,nalimov:c:\chess\nalimov}
and empty the the defaultPathEGTB as in

/defaultPathEGTB=""
Then just leave the common engine egtb path empty, this works for me."

...I can now make tounaments with correct Settings for the engines. Of course, the most test are 1CPU-1CPU an 4CPU-4CPU. The changes for this in the common engine works fine. To remember later what I have tested I use different engine names like Stockfish 1CPU or Stockfish 4CPU. When I have the correct settings behind these names - I cannot forget to switch.

...and sorry HGM for asking and confusing you (It seems to me you have been a bit angry) :wink:

Now we can close this thread and I will see, what improvements the next version has.
Werner
User avatar
hgm
Posts: 27809
Joined: Fri Mar 10, 2006 10:06 am
Location: Amsterdam
Full name: H G Muller

Re: Winboard frustrations

Post by hgm »

No I am not angry at all. Just eager to help, and frustrated that I cannot, for lack of information on the problem.

Note that you could also have set the /egtFormats option through the common EGTB Path in the settings dialog by just writing the desired value (i.e. syzygy:C:\chess\syzygy,gaviota:C:\chess\gaviota,nalimov:c:\chess\nalimov ) there; the way it works is that if the value you give doesn't contain any flavor specification prefixes In the form "flavor:", WinBoard assumes it is Nalimov (for backward compatibility), and used to set the legacy option /defaultPathEGTB. Otherwise it is used to set the /egtFormats option.

The 'Use Nickname in PGN Tag" checkbox will cause the nicknames you assign also to be used in the stored PGN, so you can see what you have been running later. (Otherwise they would just be aids for selecting the engine from the menu.) This corresponds to a -fn option.

BTW, it seems that what you really want is a Polyglot that does not pass on the Hash Size and Max CPUs settings of the GUI to the engine, but treats Hash and Threads as if they were non-standard engine-defined option. The disadvantage of that would be that you really have to install every engine multiple times, with different settings of these two options. So that they cannot share the same Polyglot ini file, but really have to be 'cloned', and each instance of the engine will somehow explicitly have to mention what ini file to use for the settings.