Uploaded Sapeli-128bit source code here: https://github.com/SamuraiDangyo/bins/b ... master.zip
So I experimented a bit w/ the latest Sapeli 1.71.
Instead of adding an array and tons of complex code.
I added a new type BITBOARD128 which is 16 bytes. Which is unsigned uint_128t.
I use it for hashing. Moves and the rest are still 64bit. So it works perfectly. Super easy and all asserts are ok. GCC at least supports these types.
First lets test that our types are what they should be:
1.71 64-bit:
Code: Select all
./old -memory
> Sapeli memory usage :
BOARD_T 184 B
HASH_ENTRY_T 16 B
EVAL_HASH 262144 KB ( count: 16777216, key: 16777215 )
GOOD_MOVES_HASH 131072 KB ( count: 8388608, key: 8388607 )
= Total memory 393216 KBCode: Select all
./sapeli -memory
> Sapeli memory usage :
BOARD_T 192 B
HASH_ENTRY_T 32 B
EVAL_HASH 262144 KB ( count: 8388608, key: 8388607 )
GOOD_MOVES_HASH 131072 KB ( count: 4194304, key: 4194303 )
= Total memory 393216 KBSome quick 1+0.01 Chess960 games, that it actually works. There is no difference.
Code: Select all
Score of Sapeli-128bit 1.71 vs Sapeli 1.71: 201 - 199 - 105 [0.502] 505
Elo difference: 1.38 +/- 26.98
Finished matchSapeli-128bit 1.71 : bench :
Code: Select all
= nodes 104971734 mnps 3.499 time 30.000Code: Select all
= nodes 122129827 mnps 4.071 time 30.000