New engine: Xiphos

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

Moderators: hgm, Rebel, chrisw

User avatar
CMCanavessi
Posts: 1142
Joined: Thu Dec 28, 2017 4:06 pm
Location: Argentina

Re: New engine: Xiphos

Post by CMCanavessi »

Is it normal that the node count and depth differs significantly with different hash sizes?
Follow my tournament and some Leela gauntlets live at http://twitch.tv/ccls
mt
Posts: 29
Joined: Tue Feb 27, 2018 7:00 am

Re: New engine: Xiphos

Post by mt »

CMCanavessi wrote:Is it normal that the node count and depth differs significantly with different hash sizes?
Hi Carlos, that's strange. I can't see any differences, can you give me an example?
Also, does the 'perft' returns good results? (btw, there is also `test` command that runs a couple of test positions).
User avatar
Graham Banks
Posts: 41423
Joined: Sun Feb 26, 2006 10:52 am
Location: Auckland, NZ

Re: New engine: Xiphos

Post by Graham Banks »

Sounds impressive. :)
Looking forward to including it in my testing.
gbanksnz at gmail.com
AndrewGrant
Posts: 1753
Joined: Tue Apr 19, 2016 6:08 am
Location: U.S.A
Full name: Andrew Grant

Re: New engine: Xiphos

Post by AndrewGrant »

Tested against latest release of Ethereal

Code: Select all

Ethereal 9.00 vs Xiphos 0.1: 471 - 255 - 274  [0.608] 1000 @  5s+.05s +76
Ethereal 9.00 vs Xiphos 0.1:  182 - 97 - 121  [0.606]  400 @ 20s+.20s +75
This would have Xiphos (1CPU) around 2900 on CCRL.

To be honest I expected your 3000 elo estimate to be a gross over estimate.
But you have proved my expectation wrong. Xiphos is quite strong.

I scrolled through the source for a few minutes. Reminds me of Demolito.
Everything is very simple, and very clean. I expect you to find a great many more improvements.
#WeAreAllDraude #JusticeForDraude #RememberDraude #LeptirBigUltra
"Those who can't do, clone instead" - Eduard ( A real life friend, not this forum's Eduard )
User avatar
CMCanavessi
Posts: 1142
Joined: Thu Dec 28, 2017 4:06 pm
Location: Argentina

Re: New engine: Xiphos

Post by CMCanavessi »

mt wrote:
CMCanavessi wrote:Is it normal that the node count and depth differs significantly with different hash sizes?
Hi Carlos, that's strange. I can't see any differences, can you give me an example?
Also, does the 'perft' returns good results? (btw, there is also `test` command that runs a couple of test positions).
Look, this is with the default 128 mb hash size:


Code: Select all

Xiphos 0.1 by Milos Tatarevic
threads=1
hash=128MB
go depth 25
info depth 1 score cp 22 nodes 1 time 0 nps 1000 pv g1h3
info depth 1 score cp 66 nodes 2 time 0 nps 2000 pv g1f3
info depth 2 score cp 0 nodes 43 time 0 nps 43000 pv g1f3
info depth 3 score cp 66 nodes 214 time 0 nps 214000 pv g1f3
info depth 4 score cp 7 nodes 589 time 1 nps 294500 pv g1f3
info depth 5 score cp 18 nodes 802 time 1 nps 401000 pv g1f3
info depth 5 score cp 38 nodes 978 time 1 nps 489000 pv g1f3
info depth 5 score cp 37 nodes 1405 time 1 nps 702500 pv g1f3
info depth 5 score cp 46 nodes 2067 time 2 nps 689000 pv b1c3
info depth 6 score cp 21 nodes 2824 time 2 nps 941333 pv b1c3
info depth 7 score cp 21 nodes 3793 time 3 nps 948250 pv b1c3
info depth 8 score cp 23 nodes 9570 time 6 nps 1367142 pv g1f3
info depth 8 score cp 25 nodes 11620 time 7 nps 1452500 pv e2e4
info depth 9 score cp 35 nodes 13797 time 8 nps 1533000 pv e2e4
info depth 9 score cp 40 nodes 14603 time 9 nps 1460300 pv e2e4
info depth 10 score cp 30 nodes 23283 time 13 nps 1663071 pv e2e4
info depth 11 score cp 40 nodes 32477 time 18 nps 1709315 pv e2e4
info depth 11 score cp 43 nodes 47095 time 25 nps 1811346 pv e2e4
info depth 12 score cp 45 nodes 86383 time 43 nps 1963250 pv e2e4
info depth 13 score cp 33 nodes 161853 time 81 nps 1973817 pv g1f3
info depth 14 score cp 17 nodes 242714 time 123 nps 1957370 pv g1f3
info depth 15 score cp 17 nodes 365003 time 182 nps 1994551 pv g1f3
info depth 15 score cp 27 nodes 407186 time 202 nps 2005842 pv e2e4
info depth 15 score cp 37 nodes 490587 time 243 nps 2010602 pv e2e4
info depth 16 score cp 25 nodes 609380 time 299 nps 2031266 pv e2e4
info depth 17 score cp 35 nodes 725308 time 361 nps 2003613 pv e2e4
info depth 17 score cp 24 nodes 865277 time 433 nps 1993725 pv e2e4
info depth 18 score cp 19 nodes 1049705 time 524 nps 1999438 pv e2e4
info depth 19 score cp 17 nodes 1558819 time 773 nps 2013978 pv e2e4
info depth 20 score cp 27 nodes 2327728 time 1151 nps 2020597 pv e2e4
info depth 20 score cp 25 nodes 2479015 time 1227 nps 2018741 pv e2e4
info depth 21 score cp 34 nodes 4926481 time 2438 nps 2019877 pv e2e4
info depth 22 score cp 16 nodes 6714113 time 3318 nps 2022932 pv e2e4
info depth 23 score cp 21 nodes 9791997 time 4856 nps 2016058 pv e2e4
info depth 24 score cp 31 nodes 16397394 time 8202 nps 1998950 pv e2e4
info depth 24 score cp 12 nodes 31583493 time 15752 nps 2004919 pv e2e4
info depth 25 score cp 22 nodes 35353690 time 17585 nps 2010331 pv e2e4
info depth 25 score cp 31 nodes 44155739 time 21884 nps 2017625 pv e2e4
bestmove e2e4
perft 6
perft(6)=119060324, time: 473ms, nps: 251182118 (no hashing, bulk counting)
It takes 21 seconds to reach depth 25, nodes 44155739 and nps 2017625


Now look at this, with 4gb hash size:

Code: Select all

Xiphos 0.1 by Milos Tatarevic
threads=1
hash=128MB
setoption name Hash value 4096
hash=4096MB
go depth 25
info depth 1 score cp 22 nodes 1 time 0 nps 1000 pv g1h3
info depth 1 score cp 66 nodes 2 time 0 nps 2000 pv g1f3
info depth 2 score cp 0 nodes 43 time 0 nps 43000 pv g1f3
info depth 3 score cp 66 nodes 189 time 0 nps 189000 pv g1f3
info depth 4 score cp 7 nodes 874 time 1 nps 437000 pv g1f3
info depth 5 score cp 18 nodes 1254 time 1 nps 627000 pv g1f3
info depth 5 score cp 40 nodes 1566 time 1 nps 783000 pv g1f3
info depth 5 score cp 40 nodes 2104 time 2 nps 701333 pv g1f3
info depth 6 score cp 0 nodes 5633 time 3 nps 1408250 pv g1f3
info depth 6 score cp 18 nodes 9001 time 5 nps 1500166 pv e2e4
info depth 7 score cp 28 nodes 11227 time 6 nps 1603857 pv e2e4
info depth 7 score cp 40 nodes 14426 time 8 nps 1602888 pv e2e4
info depth 8 score cp 25 nodes 21099 time 10 nps 1918090 pv e2e4
info depth 9 score cp 35 nodes 32837 time 15 nps 2052312 pv e2e4
info depth 9 score cp 34 nodes 52607 time 24 nps 2104280 pv e2e4
info depth 10 score cp 18 nodes 118974 time 48 nps 2428040 pv e2e4
info depth 11 score cp 28 nodes 152051 time 61 nps 2452435 pv e2e4
info depth 11 score cp 41 nodes 222614 time 85 nps 2588534 pv e2e4
info depth 12 score cp 17 nodes 479892 time 179 nps 2666066 pv e2e4
info depth 13 score cp 27 nodes 677709 time 254 nps 2657682 pv e2e4
info depth 13 score cp 25 nodes 859943 time 322 nps 2662362 pv e2e4
info depth 14 score cp 35 nodes 1174917 time 447 nps 2622582 pv e2e4
info depth 14 score cp 20 nodes 1866620 time 702 nps 2655220 pv e2e4
info depth 15 score cp 30 nodes 2230039 time 842 nps 2645360 pv e2e4
info depth 15 score cp 41 nodes 3337292 time 1249 nps 2669833 pv e2e4
info depth 16 score cp 12 nodes 7680480 time 2931 nps 2619536 pv g1f3
info depth 16 score cp 18 nodes 9260836 time 3568 nps 2594798 pv e2e3
info depth 17 score cp 11 nodes 14613738 time 5648 nps 2586960 pv e2e3
info depth 17 score cp 28 nodes 15674416 time 6062 nps 2585257 pv e2e4
info depth 17 score cp 48 nodes 19905381 time 7610 nps 2615343 pv e2e4
info depth 17 score cp 16 nodes 25488489 time 9602 nps 2654221 pv e2e4
info depth 18 score cp 26 nodes 30669701 time 11624 nps 2638253 pv e2e4
info depth 18 score cp 46 nodes 42526282 time 16091 nps 2642697 pv e2e4
info depth 18 score cp 9 nodes 48939662 time 18454 nps 2651837 pv e2e4
info depth 18 score cp 14 nodes 55706892 time 21173 nps 2630910 pv g1f3
info depth 19 score cp 15 nodes 67536133 time 25894 nps 2608076 pv g1f3
info depth 19 score cp 24 nodes 75205512 time 28765 nps 2614388 pv e2e4
info depth 19 score cp 30 nodes 84081437 time 32085 nps 2620502 pv e2e4
info depth 20 score cp 27 nodes 100265486 time 38229 nps 2622691 pv e2e4
info depth 21 score cp 37 nodes 147017114 time 55896 nps 2630143 pv e2e4
info depth 21 score cp 16 nodes 230793869 time 86676 nps 2662688 pv e2e4
info depth 22 score cp 26 nodes 267668466 time 100611 nps 2660402 pv e2e4
info depth 22 score cp 28 nodes 363168972 time 136757 nps 2655559 pv e2e4
info depth 23 score cp 34 nodes 575981169 time 217338 nps 2650151 pv e2e4
info depth 24 score cp 44 nodes 1314954085 time 497179 nps 2644824 pv e2e4
info depth 24 score cp 22 nodes 1538163429 time 581716 nps 2644178 pv e2e4
info depth 25 score cp 32 nodes 1915730915 time 724110 nps 2645631 pv e2e4
info depth 25 score cp 30 nodes 2722420297 time 1025982 nps 845996416 pv e2e4
bestmove e2e4
perft 6
perft(6)=119060324, time: 469ms, nps: 253319838 (no hashing, bulk counting)
Now to get to depth 25 it takes 1025 seconds (~49 times more), nodes 2722420297 (~61 times more), and the speed went up ~30% except in the last output, that went completely crazy: nps 845996416

perft shows no difference though
Follow my tournament and some Leela gauntlets live at http://twitch.tv/ccls
mt
Posts: 29
Joined: Tue Feb 27, 2018 7:00 am

Re: New engine: Xiphos

Post by mt »

CMCanavessi wrote:
Now to get to depth 25 it takes 1025 seconds (~49 times more), nodes 2722420297 (~61 times more), and the speed went up ~30% except in the last output, that went completely crazy: nps 845996416

perft shows no difference though
Oh, thanks for the report, i can indeed replicate that for 4GB hash. 2GB works fine for me.
User avatar
CMCanavessi
Posts: 1142
Joined: Thu Dec 28, 2017 4:06 pm
Location: Argentina

Re: New engine: Xiphos

Post by CMCanavessi »

mt wrote:
CMCanavessi wrote:
Now to get to depth 25 it takes 1025 seconds (~49 times more), nodes 2722420297 (~61 times more), and the speed went up ~30% except in the last output, that went completely crazy: nps 845996416

perft shows no difference though
Oh, thanks for the report, i can indeed replicate that for 4GB hash. 2GB works fine for me.
Then it's an easy fix, just set the max to 2gb :lol: :lol:
Follow my tournament and some Leela gauntlets live at http://twitch.tv/ccls
User avatar
CMCanavessi
Posts: 1142
Joined: Thu Dec 28, 2017 4:06 pm
Location: Argentina

Re: New engine: Xiphos

Post by CMCanavessi »

Ok, here's another issue I'm facing:

If I write setoption name Hash value 2000, i get hash=2000MB and all works fine
If I write setoption name Hash value 2020, i get hash=2020MB and all works fine
If I write setoption name Hash value 2047, i get hash=2047MB and all works fine
If I write setoption name Hash value 2048 it hangs, using 100% cpu and no answer from the engine, only solution is ctrl+c or close window/kill process

This crashing behaviour continues if I set it to 2500, 3000, 3500, 4000, until 4095. If I set it to 4096, it works but then what I posted above happens, the engine goes crazy with the depth and node counts.

And this is crazy, if I set it to 4097, it also works, even if the reported max is 4096


Code: Select all

Xiphos 0.1 by Milos Tatarevic
threads=1
hash=128MB
setoption name Hash value 4097
hash=4097MB
uci
id name Xiphos 0.1
id author Milos Tatarevic
option name Hash type spin default 128 min 1 max 4096
option name Threads type spin default 1 min 1 max 64
uciok
go depth 25
info depth 1 score cp 22 nodes 1 time 0 nps 1000 pv g1h3
info depth 1 score cp 66 nodes 2 time 0 nps 2000 pv g1f3
info depth 2 score cp 0 nodes 43 time 0 nps 43000 pv g1f3
info depth 3 score cp 66 nodes 214 time 1 nps 107000 pv g1f3
info depth 4 score cp 7 nodes 589 time 1 nps 294500 pv g1f3
info depth 5 score cp 18 nodes 802 time 1 nps 401000 pv g1f3
info depth 5 score cp 38 nodes 978 time 1 nps 489000 pv g1f3
info depth 5 score cp 37 nodes 1405 time 2 nps 468333 pv g1f3
info depth 5 score cp 46 nodes 2067 time 2 nps 689000 pv b1c3
info depth 6 score cp 21 nodes 2824 time 3 nps 706000 pv b1c3
info depth 7 score cp 21 nodes 3793 time 3 nps 948250 pv b1c3
info depth 8 score cp 23 nodes 9582 time 6 nps 1368857 pv g1f3
info depth 8 score cp 25 nodes 11653 time 8 nps 1294777 pv e2e4
info depth 9 score cp 35 nodes 13845 time 9 nps 1384500 pv e2e4
info depth 9 score cp 40 nodes 14647 time 10 nps 1331545 pv e2e4
info depth 10 score cp 30 nodes 23428 time 14 nps 1561866 pv e2e4
info depth 11 score cp 40 nodes 31165 time 17 nps 1731388 pv e2e4
info depth 11 score cp 43 nodes 49649 time 25 nps 1909576 pv e2e4
info depth 12 score cp 42 nodes 90399 time 44 nps 2008866 pv e2e4
info depth 13 score cp 36 nodes 113761 time 55 nps 2031446 pv e2e4
info depth 14 score cp 30 nodes 228934 time 107 nps 2119759 pv e2e4
info depth 15 score cp 40 nodes 395579 time 178 nps 2209938 pv e2e4
info depth 15 score cp 39 nodes 406486 time 183 nps 2209163 pv e2e4
info depth 16 score cp 30 nodes 462434 time 205 nps 2244825 pv e2e4
info depth 17 score cp 30 nodes 599000 time 261 nps 2286259 pv e2e4
info depth 18 score cp 40 nodes 838743 time 363 nps 2304239 pv e2e4
info depth 18 score cp 10 nodes 1410743 time 624 nps 2257188 pv e2e4
info depth 19 score cp 20 nodes 2346002 time 1019 nps 2300001 pv e2e4
info depth 19 score cp 25 nodes 2583633 time 1122 nps 2300652 pv e2e4
info depth 20 score cp 35 nodes 3379732 time 1449 nps 2330849 pv e2e4
info depth 20 score cp 32 nodes 3666645 time 1563 nps 2344402 pv e2e4
info depth 21 score cp 42 nodes 6882969 time 2946 nps 2335585 pv e2e4
info depth 21 score cp 45 nodes 9402777 time 4021 nps 2337836 pv e2e4
info depth 22 score cp 15 nodes 16367499 time 7009 nps 2334878 pv e2e4
info depth 23 score cp 25 nodes 20103375 time 8581 nps 2342504 pv e2e4
info depth 23 score cp 29 nodes 24184653 time 10373 nps 2331275 pv e2e4
info depth 24 score cp 20 nodes 38881007 time 16502 nps 2355996 pv e2e4
info depth 25 score cp 23 nodes 50139771 time 21300 nps 2353869 pv e2e4
bestmove e2e4
with 4097, again it's fast reaching depth 25, but the node count doesn't match the one with 128 mb hash.
Follow my tournament and some Leela gauntlets live at http://twitch.tv/ccls
Ras
Posts: 2487
Joined: Tue Aug 30, 2016 8:19 pm
Full name: Rasmus Althoff

Re: New engine: Xiphos

Post by Ras »

mt wrote:Oh, thanks for the report, i can indeed replicate that for 4GB hash. 2GB works fine for me.
I'd look for some variable that is of type int but should be size_t or ssize_t.
mt
Posts: 29
Joined: Tue Feb 27, 2018 7:00 am

Re: New engine: Xiphos

Post by mt »

Ras wrote:
mt wrote:Oh, thanks for the report, i can indeed replicate that for 4GB hash. 2GB works fine for me.
I'd look for some variable that is of type int but should be size_t or ssize_t.
Exactly! I fixed the issue and updated binaries.