syzygy wrote: bob wrote: syzygy wrote:
bob wrote:Would be one hell of a machine to generate endgame tables..
Just for fun, how long does it normally take to generate through 5 pieces? and then 6 pieces? If it is reasonable, I can give it a whirl just to see how this thing works, if your generator is available?
5 pieces take about an hour on my machine (i7-3930K at 4.2Ghz, 6 cores / 12 threads). 6 pieces around 100x as long.
My generator is available (see signature), but it expects a little endian machine and it uses a bit of x86 inline assembly for atomically doing updates to the tablebase arrays.
The inline assembly can now be replaced with C11 atomics (if you have a relatively recent gcc). That should not take me much time.
The endianness might be a non-issue, but that is not clear to me. What does the machine / the OS expect? But it can in any case be fixed and I should probably do that anyway at some point.
OK, if you are interested, you could try this version:
It requires a relatively recent gcc (with c11 atomics support).
- download the zip file and extract
- specify desired number of max threads in src/Makefile (-DMAX_THREADS=N)
- make all
- test, e.g. with 8 threads: ./rtbgen -t 8 KQvK
- see if probing of KQvK works: ./rtbgen -t 8 KQQvK
This should create four files:
Code: Select all
$ md5sum *.rtbw?
File sizes should be 7056, 25936, 272, 5392.
(If the md5sums do not match but the file sizes do, my attempt to port the internal (non-md5) checksum calculation to big endian was not yet fully successful.)
rtbgen creates pawnless tables, rtbgenp creates pawnful tables.
Create all 5-piece TBs:
Code: Select all
$ ./run.pl --generate --threads 160 --min 3 --max 5
Hmmm, run.pl expects rtbgen and rtbgenp to be in your $PATH.
Don't bother with rtbver and rtbverp (or with ./run.pl --verify).
Of course untested on a power 8 machine, so the above is likely to break down at some point