
Buongiorno!

RobboLito 0.085 arrives with RobboBases.
Version 0.085d-RB1 fixes a TripleBuild bug.

* RobboTotalBase

First the RobboLito system must be built.

$ make ## acknowledge HAS_POPCNT when possible

For the building of your 2s and 3s:
$ mkdir RobboTotalBase
$ mkdir RobboTotalBase/3
$ ./RobboTotalBuild --recurse P

And then 4s and 5s
$ mkdir RobboTotalBase/4
$ ./RobboTotalBuild --recurse PP Pp
$ mkdir RobboTotalBase/5
$ ./RobboTotalBuild --recurse PPP PPp

This last can take about 10-20 hours, and fit in 1GB of memory in the build.
Add the option --cpus and a a number and it will go faster.
$ ./RobboTotalBuild --recurse --cpus 4 PPP PPp
The ending disk usage will be around 3.5GB.

The new RobboBlockedBases for blocked pawns are accessed via the Z letter.
$ ./RobboBuild --recurse Z ZZ ZZZ
This takes another 3-5 hours, and makes it 40% larger. There are 78 more files.

The filenames can also be used in Windows mode via the compilation switch
 -DNOME_WINDOWS
as this arranges the filenames as, viz, KPPK and KPKP for PP and pp. This
is not totally tested (on Windows, for instance), and a true Windows build
can achieve other problems, but the filenames should now lack problems.

So too the 6s. We discharged the disk build option as it is too slow.
The totality of 6s will emerge in many days or weeks,
and you need to tune the memory with 32GB in RAM enough but edgy.

A rule is to multiply by 150-200x for each next piece. The 5 piece take to
build in nearly 15 hours of cpu at 3.41GB, and the 6 piece in 3-4 months
of cpu when you have the memory (RAM) at 476GB. The 7 piece
imagination weighs so then for 40-70 years of cpu at 70-95TB of disk,
but is not here yet. The RAM burden has also a largeness for size.
The Blocked bases accrue both an extra 40-50% in disk and time.

* Compression

RobboTotalBase uses by design 64K blocks of RLE+BWT+MTF+Huffman-compressed DTC
data, with wins just having one bit. This compares to other schemes in the end.

            3s        4s          5s         4s+2s        3+3s
Robbo    37176  15885237  3659510583  259583763053  216349730736
Index      272     10780     2289088      12181784       9162036
Total    37448  15896017  3661799671  259595944837  216358892772
Blocked   9806   5474046  1423137391  241844059253   35541080878 <-- 5+1s
Index       28      3004      868396      11324416       3019840
Total    47282  21373067  5085805458  241855383669   35544100718 <-- 5+1s (33G)
        (46.2k) (15/20M) (3.4/4.74G) (242.8+225.2G) (201.5+33.1G)

Regular 6s:  511498938327 (476.37G), 4+2 and 3+3: 475954837609 (443.27G)
Total Count: 758461547803 (706.37G)

The Nalimov takes 7.2GB for 5s, but they are DTM. For DTC, they are still
4.5GB, largely for the RobboEdge in its one-sided nature. The FEG are 5.6GB
with DTM, and should compare the RobboScheme if outfitted with DTC. The new
RobboBlockedBases are not otherwise done, and the usage is still less for us.
The RobboBlockedBases have been verified to correct against the others for 3s+4s.

The 6s use hyperindexing so they load fast at startup. The BLOCK_INDEX solves
the nugget here also. The Nalimov are 1.2TB for 4+2 and 3+3 and we are nearly
3 times smaller. We verified the outliers against previous work except that
the BlockedBases are totally new.

* RobboTripleBases

These are other compressed bases, that yield only result information, but
can be accessed faster. Similar are ShredderBases and ScorpioBases. You
might propose a comparison, but I cannot avail.

Their space is 3.5MB for 4s, and 570MB for 5s. The 3+3s are already 47GB.
There are two ways to access them. The 3s and 4s are due for direct load,
and the 5s and more can be either in memory or from disk. The second option
requires you the user to be keen in monitoring the allocation. You can put
the 5s in memory with RobboTripleBulkLoadThisDirectory, and a file upon
RobboTripleBulkLoadThisName. Choice endgames need only simple files, but
you need queen promotions too for insurance. The WeakProbe can load from
disk silently in SMP mode if it is set.

On disk storage, compressing the TripleBases finds its form, but more brains
are needed to extend the method. The latest idea was to Huffman the RLE,
but this was not spicy in the end. The time to load was still random access
so the compression is not relevent.

The building of a TripleBase depends on the TotalBase, and can also recurse.
But a warning, the piece order is important, and the superior choices I found
are in with included scripts. Build time wanders around 2-3 hours for your 5s.
The build is now SMP so this will aid. The 3+3s can fall in around 2 days.

$ mkdir RobboTripleBase
$ mkdir RobboTripleBase/2
$ mkdir RobboTripleBase/3
$ mkdir RobboTripleBase/4
$ mkdir RobboTripleBase/5
$ sh triple3.sh
$ sh triple4.sh
$ sh triple5.sh

The RobboTripleBlockedBases are with
$ sh tripleZ.sh

* Accounting
2 piece: 1
3 piece: 10 + 1
4 piece: 55 + 11
5 piece: 220 + 66
3+3: 513
4+2: 746
5+1: 236
6 piece Blocked: 862
The amount is 2721 for all.
There are much more for 6s thanks to pawn splitting for files.

* In Use

These are now achieved via the UCI options in IvanHoe. RobboTripleBases are
in search, and RobboTotalBases at root positions. There is some intelligence.

* Statistical Analyses

$ ./RobboBuild --stats Qr
Broken:  746764
Win:  1134276
Draw:  9133
Loss in 0:  306
Loss in 1:  1818
Loss in 2:  55
Total 1892352

RobboBuild uses symmetries, so that counts may not be the equal of other
system conventions for endgames. There is also a --zugzwang option to denote
where the move is a burden.....

