Moderators: hgm, Andres Valverde
H.G.Muller wrote:1) Only protocol-2 engines that sent
feature memory=1
at startup amongst the other features will receive the memory command.
2) WinBoard will send to such engines for each new game, directly after the ponder commands ('hard' and/or 'easy'), the line
memory M
Pedro Castro wrote:UCI engines that run on polyglot in Winboard_F will understand this feature memory?
I think I understand the idea, this fact has some advantages:
1. The configuration of the engines is simpler, saves time configuration, especially for tournament organizers who have to set up dozens of engines.
2. The system can be more just, all engines use the same memory, as a programmer could hide the size of a memory hash, I do not think we know where it is used each Mb of the program.
On the other hand there is one thing that worries me, you may have more memory instead favors a class from another class, for example access to bitbases 5 men of Scorpio can be about 45 Mb (using 32 for the cache), is possible that if an operator puts 128 MB limit, then perhaps it is better to use it primarily as a hash table that have bitbases. Vanish the bitbases or tables Namilov in tournament since virtually they no give ELO?
This may involve a small revolution that not all engines will follow. What will the organizers of tournaments with engines that do not follow?
Ron Murawski wrote:
I agree with Pedro. I prefer EGTB cache size separate from main hash/ pawn hash/ eval hash/ etc.
H.G.Muller wrote:As to the size of the EGTB cache: this could be a valid concern, although it smells of bad design: good EGTB code would make flexible use of available memory, independent of how many tablebases are available. People that want to use poor code that doesn't, should base its settings on the worst case. If that hurts them when there are only few EGTBs available, that provides a nice incentive to improve their code.
H.G.Muller wrote:I don't follow that line of reasoning at all. From what I understand from it, quite the opposite seems true to me: Allowing engines to use more physical memory than there is will enormously drive up the usage of hard disk, as even engines that are designed to run purely from memory will trigger swapping by the OS.
H.G.Muller wrote:It seems also to me that engines that want to heavily probe EGTBs in some game stage would have made a very poor design choice by taking small EGTB cache for the benifit of larger hash: their search will be slowed down enormously by having to wait for the probes that could have been stisfied instantly had the relevant EGTB vlocks still be cached.
H.G.Muller wrote:Nothing has to stop engine authors from having the TD set the EGTB cache size by other means (ini file, command-line option), and adding a memory command to WB protocol does not change any of this. Commands to facilitate setting of EGTB parameters will be added to WB protocol later anyway.
If there is a need for engines to know in advance how many tablebases there are, to avoid having each engine figuring it out for themselves, it seems to me that quoting an EGTB cache size is a very roundabout way to specify it. It i tied to one particular implementation which might soon be obsolete, so that in the future 40MB EGTB cache might mean that in order to run efficintly you need 20MB, or 60MB, or whatever. If it is important for engines to know the number of tablebases, it would be logical for the GUI to simply tell them the number of tablebases. In response to feature egt="nalimov", the engine could receive a command egts nalimov 120, telling it that there are 120 tablebases.
Or, if that is desirable, specify by number of men:
egts nalimov 3:5 4:40 5:160 6:0
Ron Murawski wrote:What I said is: the more disk reading/writing, the faster a drive will wear out.
I like that solution!
H.G.Muller wrote:Ron Murawski wrote:I like that solution!
Which would you like better? The simple number, or the breakdown by number of men? In future formats, that might treat P-slices as separate tablebases, it is not so obvious how you should qualify them. My inclination is to use the single number, and let the TD set it as a WinBoard parameter Then WinBoard would not have to know at all what it means, and it could actually mean different things for different formats. E.g. for "nalimov" it could mean number of files, for "scorpio" it could mean nr of MegaBytes.
H.G.Muller wrote:Ron Murawski wrote:What I said is: the more disk reading/writing, the faster a drive will wear out.
Even that is not obvious to me: the disk is spinning always, and the head is always in contact with the media. I don't think hard disks have a head load/unload like floppies had; that would take way too much time to engage them. I am also not sure if they park the head somewhere when there is no activity (laptop drives might). So the only difference would be the seeks, and modern disks no longer use stepper motors, but just balance the head assembly between two magnetic coils. It is hard to believe that moving the heads this way would cause significant wear on the bearings of the head assembly, if the disk itself is spinning all the time at a multiple of that speed.
shredder 7.04,tabebases on hard-disc
8/8/6k1/R2pr3/P7/8/5P2/5K2 b - -
13/25 0:10 -0.86 1...Kf6 2.Ta6+ Kf5 3.Ta8 Ke4 4.a5 Kd3 5.f3 d4 6.a6 (2.561.624) 238
14/27 0:14 -0.90 1...Kf6 2.Ta6+ Kf5 3.Ta8 Ke4 4.Tg8 d4 5.Ke2 Kf5+ 6.Kd3 Ta5 7.Tf8+ Ke6 8.Kxd4 Txa4+ 9.Ke3 Ta3+ 10.Kf4 Ta4+ 11.Kg5 Ta5+ 12.Kg6 (3.866.100) 261
14/29 0:17 -0.89++ 1...Te4 2.f3 Te3 3.Tb5 Txf3+ 4.Ke2 Ta3 5.a5 (4.468.516) 256
14/29 0:18 -0.89 1...Te4 2.f3 Te3 3.Kg2 Ta3 4.Kg3 Kf6 5.Kf4 d4 6.Ke4 Te3+ 7.Kxd4 Ke7 (4.630.807) 248
15/31 0:32 -0.84 1...Te4 2.Ta8 d4 3.f3 Te3 4.Kf2 Ta3 5.Ke2 Kf5 6.a5 Ke5 7.Kd1 (8.694.336) 267
shredder 7.04 tb on usb stick
13/26 0:04 -0.82 1...Te4 2.Ta6+ Kf5 3.Ta8 d4 4.f3 Te3 5.Tf8+ Kg6 6.Td8 Txf3+ 7.Ke2 Ta3 8.Ta8 (1.498.368) 352
14/29 0:05 -0.82 1...Te4 2.Ta6+ Kf5 3.Ta8 d4 4.Tf8+ Kg6 5.f3 Te3 6.Td8 Txf3+ 7.Ke2 Ta3 8.Ta8 (2.244.672) 393
15/31 0:14 -0.73 1...Te4 2.Kg2 Kf6 3.Ta8 Tb4 4.Kf3 Ke5 5.Td8 Txa4 6.Te8+ Kd6 7.Tf8 (7.435.737) 524
16/32 0:21 -0.97 1...Te4 2.Kg2 Kf6 3.Ta8 d4 4.Kf3 Te7 5.Ta5 Ke6 6.Ke2 Tf7 7.Kd3 Kd7 (11.360.198) 540
H.G.Muller wrote:Perhaps I should put the info about the number of tablebases in the same command as the tablebase path, because logically they belong together (describing the part of the file system where the tablebases are). Like
egtpath nalimov F:\endgames\nalimov 3:5 4:40
As different future tablebase formats might have other informton that is relevant to them, I am in favor of rather loose definition of this command within WB protocol, like
egtbpath FORMAT PATHNAME [OTHERINFO]
where the syntax of the optional OTHERINFO is not really part of WB protocol, but can be defined by the inventor of the tablebase format. For nalimov we could define it as a space-separated list of MEN:NRFILES pairs. WinBoard would simply pass on the string the user had specified for the pathname, onto which the OTHERINFO is piggybacked, and never needs to know which part of it is pathname, which part of it is OTHERINFO, or what it means. E.g. through a comamnd-line option
/egtFormats="nalimov F:\endgames\nalimov 3:5 4:40,scorpio F:\endgames\bitbases 45"
WinBoard would parse the string argument as comma-separated list, and take the part before the first space in each item of the list a format name, and remember everything after that space as the string to be sent for that format.
The format names would be matched against those in the comma-separated list the engine sends with the features:
feature egt="nalimov,scorpio"
For each match (in this example both for nalimov and scorpio) it would then reply by the corresponding egtpath command, where as first argument to the command it would echo the format name that matched, and as second argument the string the user specified for this. So in this case
egtpath nalimov F:\endgames\nalimov 3:5 4:40
egtpath scorpio F:\endgames\bitbases 45
Format names specified by the engine, but not matching anything specified by the user, would not lead to any response. The asumption of the engine should be that the EGTs are not available unless it gets an explicit egtbpath command for them. Similarly, formats specified by the user, but not amongst the engine features, will also not lead to any commands; the assumption will be that the engine does not support them.
Zach Wegner wrote:... For those that care enough about the difference (at most a few Elo), I don't think it would be so hard to write a 10 line function to count the TBs.
Return to WinBoard development and bugfixing
Users browsing this forum: No registered users and 38 guests