A Gothic tale....part I

Archive of the old Parsimony forum. Some messages couldn't be restored. Limitations: Search for authors does not work, Parsimony specific formats do not work, threaded view does not work properly. Posting is disabled.

A Gothic tale....part I

Postby Roger Brown » 18 Apr 2004, 06:54

Geschrieben von:/Posted by: Roger Brown at 18 April 2004 07:54:46:

Hello all (particularly Tord)

I have some results of a beta for Gothmog. As much as I do not believe that the analysis of EPD says much about play over the board, I am not averse to obtaining evidence from all sources in my quest for the truth - whatever that means.
The beta performed better - look on the solution times to see what I mean - than the release on all the EPD tests save for WAC New.
Not bad from a programmer who knows nothing at all about writing a chess engine.
:-)
I am currently testing the versions in an actual mini tournament.
I will keep you posted.
Later.


Analysis from C:\Program Files\Arena\Tactics\Engine Tests\iq2.epd
Analyzing engine: Gothmog
162 of 201 matching moves
4/16/2004 5:38:36 AM, Total time: 12:33:41 AM Rated time: 08:32 = 512 Seconds
IQ score 2511
Analyzing engine: Gothmog 0.48
166 of 201 matching moves
4/16/2004 6:12:08 AM, Total time: 1:07:13 AM Rated time: 07:50 = 470 Seconds
IQ score 2526




Analysis from C:\Program Files\Arena\Tactics\Engine Tests\wacnew.epd
Analyzing engine: Gothmog
255 of 300 matching moves
4/16/2004 6:58:09 AM, Total time: 12:45:52 AM Rated time: 11:10 = 670 Seconds
Analyzing engine: Gothmog 0.48
256 of 300 matching moves
4/16/2004 7:44:16 AM, Total time: 1:32:00 AM Rated time: 14:10 = 850 Seconds



Analysis from C:\Program Files\Arena\Tactics\Engine Tests\ecm-gcp.epd
Analyzing engine: Gothmog
136 of 183 matching moves
4/16/2004 8:16:22 AM, Total time: 12:29:34 AM Rated time: 14:06 = 846 Seconds

Analyzing engine: Gothmog 0.48
136 of 183 matching moves
4/16/2004 8:45:39 AM, Total time: 12:58:51 AM Rated time: 11:00 = 660 Seconds
Roger Brown
 

Re: A Gothic tale....part I

Postby Tord Romstad » 18 Apr 2004, 14:37

Geschrieben von:/Posted by: Tord Romstad at 18 April 2004 15:37:12:
Als Antwort auf:/In reply to: A Gothic tale....part I geschrieben von:/posted by: Roger Brown at 18 April 2004 07:54:46:
Hello all (particularly Tord)
I have some results of a beta for Gothmog. As much as I do not believe that the analysis of EPD says much about play over the board, I am not averse to obtaining evidence from all sources in my quest for the truth - whatever that means.
The beta performed better - look on the solution times to see what I mean - than the release on all the EPD tests save for WAC New.
Not bad from a programmer who knows nothing at all about writing a chess engine.
:-)
Analysis from C:\Program Files\Arena\Tactics\Engine Tests\wacnew.epd
Analyzing engine: Gothmog
255 of 300 matching moves
4/16/2004 6:58:09 AM, Total time: 12:45:52 AM Rated time: 11:10 = 670 Seconds
Analyzing engine: Gothmog 0.48
256 of 300 matching moves
4/16/2004 7:44:16 AM, Total time: 1:32:00 AM Rated time: 14:10 = 850 Seconds
Hello Roger!
This is nothing more than a coincidence, I think. There is no reason why
0.4.8d should perform noticably better (or worse) than 0.4.7 in test suites.
I don't think I ever claimed to know *nothing*. :-)

255 or 256 out of 300 in WAC is catastrophically bad, unless the tests were
done on a 386 or some similar ancient and outdated hardware. Something must
be very wrong here. How did you run the test?
Tord
Tord Romstad
 

A Gothic incident.

Postby Mogens Larsen » 18 Apr 2004, 15:39

Geschrieben von:/Posted by: Mogens Larsen at 18 April 2004 16:39:09:
Als Antwort auf:/In reply to: Re: A Gothic tale....part I geschrieben von:/posted by: Tord Romstad at 18 April 2004 15:37:12:

Hey Tord,
In a testmatch, the following gameresult was encountered.
[Event "?"]
[Site "?"]
[Date "2004.4.17"]
[Round "5"]
[White "Yace 0.99.XX"]
[Black "Gothmog 0.4.7"]
[Result "1-0"]
[TimeControl "600+5"]
1. Nf3{0s} Nf6{0s} 2. g3{0s} d5{0s} 3. Bg2{0s} e6{0s} 4. O-O{0s} Be7{0s} 5. d4
{0s} O-O{0s} 6. c4{0s} dxc4{0s} 7. Qc2{0s} a6{0s} 8. Qxc4{0s} b5{0s} 9. Qc2{0s}
Bb7{0s} 10. Bf4{0s} Nc6{0s} 11. Nc3{0s} Nb4{0s} 12. Qc1{0s} Rc8{0s} 13. Rd1
{-0.07/10 65s} Nbd5{0s} 14. Nxd5{0s} Bxd5{0s} 15. Be3{0s} c6{0s} 16. Bg5
{-0.27/10 58s} c5{+0.12/12 25s} 17. Qf4{-0.35/10 21s} Qc7{0s} 18. Qxc7
{-0.46/10 39s} Rxc7{+0.21/12 25s} 19. Rdc1{-0.32/10 8s} Rd8{+0.21/11 20s} 20.
dxc5{-0.14/10 27s} Rxc5{+0.12/12 23s} 21. Rxc5{-0.13/11 3s} Bxc5{+0.15/13 16s}
22. Rc1{-0.16/11 10s} Bf8{+0.12/13 33s} 23. a3{-0.11/10 18s} h6{+0.12/12 10s}
24. Bxf6{-0.16/11 25s} gxf6{+0.37/13 19s} 25. e3{-0.16/11 6s} Bc4{+0.00/13 39s}
26. Rb1{-0.09/10 15s} Bc5{+0.50/12 26s} 27. Rc1{-0.10/11 18s} Bb6{+0.53/12 16s}
28. Bf1{-0.11/11 1s} Bd5{+0.50/13 26s} 29. Nd2{-0.16/11 0s} f5{+0.50/12 14s} 30.
b4{-0.12/11 10s} Kg7{+0.46/12 14s} 31. Rc3{-0.04/12 24s} Bb7{+0.59/12 16s} 32.
Nb3{+0.05/12 23s} Rd1{+0.71/14 4s} 33. f4{+0.00/11 17s} Bd5{+0.87/12 16s} 34.
Kf2{-0.01/12 1s} Bd8{+0.93/12 21s} 35. Nc5{-0.07/11 15s} Rd2+{+0.90/12 15s} 36.
Ke1{-0.09/12 7s} Rxh2{+1.21/14 16s} 37. Nxa6{+0.00/12 18s} Bc4{+1.21/13 2s} 38.
Bxc4{-0.57/13 22s} Bf6{+0.90/15 2s} 39. Rd3{-0.87/13 19s} bxc4{+1.18/13 20s} 40.
Rd7{-0.78/12 0s} Bb2{+1.25/11 11s} 41. Rc7{-0.40/12 19s} c3{+0.00/11 13s} 42. b5
{+0.00/11 13s} c2{+0.65/9 16s} 43. b6{+0.18/11 3s} Rh1+{+0.84/10 7s} 44. Ke2
{+0.41/12 16s} Rh2+{-0.47/11 6s} 45. Kf3{+0.41/11 12s} e5{-0.69/11 14s} 46. fxe5
{+0.60/11 4s} Bxe5{-0.25/11 20s} 47. Rc4{+0.93/11 0s} Rh3{-0.69/11 20s} 48. Nb4
{+0.97/11 0s} Rxg3+{-0.91/11 20s} 49. Ke2{+1.00/11 0s} c1=Q{-1.07/11 24s} 50.
Rxc1{+1.02/10 0s} f4{-1.04/11 16s} 51. Nd3{+1.53/11 3s} Rxe3+{-0.69/10 9s} 52.
Kd2{+1.32/12 6s} Bd4{-0.47/11 10s} 53. b7{+1.28/12 5s} Ba7{-0.60/12 11s} 54. Rc8
{+1.30/12 7s} Re7{-0.82/12 10s} 55. b8=Q{+1.31/12 1s} Bxb8{-0.72/12 12s} 56.
Rxb8{+1.28/12 8s} f3{-0.79/12 6s} 57. Rb2{+1.46/12 13s} Kg6{-0.75/11 1s} 58. a4
{+1.68/11 19s} f5{+0.00/12 3s} 59. a5{+1.84/12 18s} Kg5{+0.00/12 4s} 60. a6
{+1.80/12 15s} Re2+{+0.00/11 7s} 61. Kc3{+2.23/11 10s} Re8{-1.63/12 5s} 62. Rb7
{+2.35/10 10s} Ra8{+0.00/12 12s} 63. a7{+2.70/11 10s} f4{-2.50/11 3s} 64. Kd4
{+3.13/11 11s} Kf5{-2.25/11 8s} 65. Kd5{+3.20/11 2s} f2{-3.10/10 5s} 66. Nxf2
{+5.51/11 9s} f3{-5.35/11 6s} 67. Kc6{+6.03/12 17s} Kf4{-5.41/12 11s} 68. Rf7+
{+6.65/11 16s} Ke3{+0.00/14 4s} 69. Nh3{+7.05/11 11s} Rg8{-5.75/12 14s} 70. Kb7
{+12.49/10 10s} h5{-6.72/12 1s} 71. a8=Q{+17.37/10 12s} Rxa8{-9.47/13 3s} 72.
Kxa8{+327.36/10 13s} h4{-327.40/18 3s} 73. Rf4{+327.38/9 11s} e3f4{Invalid!!}
{-327.36/7 0s} 1-0 {Forfeit due to illegal move}
The relevant debug bit.


9009141 >second: time 22304
otim 19029
9009141 >second: usermove 9009141 >second: f7f4
9009297 <first : Hint: Ke2
9009297 <first : 1 32736 0 1 t  74.Rxh4 {EGTB} {760}
9009297 <first : 1 32740 0 2 t  74.Kb7 Ke3H 75.Rxh4H {EGTB} {760}
9009297 <first : 1 32740 0 18 .  74.Kb7 Ke3 75.Rxh4 {EGTB} {760}
9009313 <first : 2 32740 0 19 t  74.Kb7 Ke3 75.Rxh4H {EGTB} {760}
9009313 <first : 2 32740 0 62 .  74.Kb7 Ke3 75.Rxh4 {EGTB} {760}
9009313 <first : 3 32740 0 63 t  74.Kb7 Ke3 75.Rxh4H {EGTB} {760}
9009313 <first : 3 32740 0 151 .  74.Kb7 Ke3 75.Rxh4 {EGTB} {760}
9009313 <first : 4 32740 0 152 t  74.Kb7 Ke3 75.Rxh4H {EGTB} {760}
9009313 <first : 4 32740 0 292 .  74.Kb7 Ke3 75.Rxh4 {EGTB} {760}
9009313 <first : 5 32740 0 293 t  74.Kb7 Ke3 75.Rxh4H {EGTB} {760}
9009313 <first : 5 32740 0 588 .  74.Kb7 Ke3 75.Rxh4 {EGTB} {760}
9009313 <first : 6 32740 0 589 t  74.Kb7 Ke3 75.Rxh4H {EGTB} {760}
9009313 <second: made move f7f4
9009313 <second: 
9009313 <first : 6 32740 0 1017 .  74.Kb7 Ke3 75.Rxh4 {EGTB} {760}
9009313 <first : 7 32740 0 1018 t  74.Kb7 Ke3 75.Rxh4H {EGTB} {760}
9009329 <first : 7 32740 0 1407 .  74.Kb7 Ke3 75.Rxh4 {EGTB} {760}
9009329 <second: 1 -560 0 35 
9009329 <second: 2 -638 0 139 
9009329 <second: 3 -638 0 275 
9009329 <second: 4 -644 0 704 
9009329 <second: 5 -663 0 2018 
9009329 <second: 6 -672 1 2646 :-(
9009329 <second: 6 -675 1 2735 :-(
9009329 <second: 6 -685 1 2776 :-(
9009329 <second: 6 -704 1 2827 :-(
9009329 <second: 6 -935 1 2853 :-(
9009329 <second: 6 -32736 1 3104 :-(
9009344 <second: 6 -32736 1 3560 :-)
9009344 <second: 6 -32736 1 3560 
9009344 <second: 7 -32736 2 4943 :-)
9009344 <second: 7 -32736 2 4951 :-(
9009344 <second: 7 -32736 2 4951 
9009344 <second: <b>move e3f4</b>
GameEnds(31, Forfeit due to illegal move, 4)
Interrupting first
9009704 >first : result 1-0 {Forfeit due to illegal move}
9009719 >second: result 1-0 {Forfeit due to illegal move}


Regards,
Mogens
Mogens Larsen
 

Re: A Gothic incident.

Postby Tord Romstad » 18 Apr 2004, 15:46

Geschrieben von:/Posted by: Tord Romstad at 18 April 2004 16:46:41:
Als Antwort auf:/In reply to: A Gothic incident. geschrieben von:/posted by: Mogens Larsen at 18 April 2004 16:39:09:
Hey Tord,
In a testmatch, the following gameresult was encountered.
Hi Mogens,
I am almost willing to bet that this game was played with tablebases enabled.
There is a well-known (to me, at least) bug in the tablebase code in Gothmog
which occasionally causes this kind of behavior. For this reason, I recommend
that serious games are played with tablebases *disabled*. In WBEC, for
instance, Gothmog plays without tablebases.
Rather than fixing the bug (which admittedly wouldn't be very hard), I will
probably just remove tablebase support in Gothmog 0.4.8. Nalimov's code
almost doubles the size of the executable. This is a too big prize to pay
for something which hardly improves the playing strength at all.
Tord
Tord Romstad
 

Re: A Gothic incident.

Postby Sune Fischer » 18 Apr 2004, 16:02

Geschrieben von:/Posted by: Sune Fischer at 18 April 2004 17:02:11:
Als Antwort auf:/In reply to: Re: A Gothic incident. geschrieben von:/posted by: Tord Romstad at 18 April 2004 16:46:41:
Hey Tord,
In a testmatch, the following gameresult was encountered.
Hi Mogens,
I am almost willing to bet that this game was played with tablebases enabled.
There is a well-known (to me, at least) bug in the tablebase code in Gothmog
which occasionally causes this kind of behavior. For this reason, I recommend
that serious games are played with tablebases *disabled*. In WBEC, for
instance, Gothmog plays without tablebases.
Rather than fixing the bug (which admittedly wouldn't be very hard), I will
probably just remove tablebase support in Gothmog 0.4.8. Nalimov's code
almost doubles the size of the executable. This is a too big prize to pay
for something which hardly improves the playing strength at all.
Tord
It more than doubles the size of my exe, currently it goes from 380kb to 840kb(!!) with support for the new 6-man.
That's almost 500kb for some code that is hardly ever used, quite rediculous I agree, but I haven't really noticed any speed difference between the two so I don't think there is much of a price to pay.
Maybe there are some compiler switches to decrease its size, perhaps I'm inlining too aggressively?
-S.
Sune Fischer
 

Re: A Gothic incident.

Postby Tord Romstad » 18 Apr 2004, 16:07

Geschrieben von:/Posted by: Tord Romstad at 18 April 2004 17:07:37:
Als Antwort auf:/In reply to: Re: A Gothic incident. geschrieben von:/posted by: Sune Fischer at 18 April 2004 17:02:11:
Hey Tord,
In a testmatch, the following gameresult was encountered.
Hi Mogens,
I am almost willing to bet that this game was played with tablebases enabled.
There is a well-known (to me, at least) bug in the tablebase code in Gothmog
which occasionally causes this kind of behavior. For this reason, I recommend
that serious games are played with tablebases *disabled*. In WBEC, for
instance, Gothmog plays without tablebases.
Rather than fixing the bug (which admittedly wouldn't be very hard), I will
probably just remove tablebase support in Gothmog 0.4.8. Nalimov's code
almost doubles the size of the executable. This is a too big prize to pay
for something which hardly improves the playing strength at all.
Tord
It more than doubles the size of my exe, currently it goes from 380kb to 840kb(!!) with support for the new 6-man.
That's almost 500kb for some code that is hardly ever used, quite rediculous I agree, but I haven't really noticed any speed difference between the two so I don't think there is much of a price to pay.
Wow, that's huge!
Gothmog grows from 130 to 200 kilobytes when I enable tablebases.
I also haven't noticed a speed difference, but wasting 70 kilobytes on something
which doesn't increase the strength of the engine at all is simply too ugly for
my taste. I don't like to add huge chunks of code or data unless it makes the
engine play much better.
Tord
Tord Romstad
 

Re: A Gothic incident.

Postby Mogens Larsen » 18 Apr 2004, 16:07

Geschrieben von:/Posted by: Mogens Larsen at 18 April 2004 17:07:39:
Als Antwort auf:/In reply to: Re: A Gothic incident. geschrieben von:/posted by: Tord Romstad at 18 April 2004 16:46:41:
Hi Mogens,
I am almost willing to bet that this game was played with tablebases enabled.
There is a well-known (to me, at least) bug in the tablebase code in Gothmog
which occasionally causes this kind of behavior. For this reason, I recommend
that serious games are played with tablebases *disabled*. In WBEC, for
instance, Gothmog plays without tablebases.
Rather than fixing the bug (which admittedly wouldn't be very hard), I will
probably just remove tablebase support in Gothmog 0.4.8. Nalimov's code
almost doubles the size of the executable. This is a too big prize to pay
for something which hardly improves the playing strength at all.
Hey again,
Though I on principle dislike the idea of tablebases, ie. the introduction and distribution of cloned code, the reduction in playing time when five or less piece endings occur, is quite enjoyable when conducting tests or tournaments. I have another matter that seems somewhat irratic. That would be the appreciated act of resigning in a lost position. Gothmog quite often prefers to be checkmated despite resignation being enabled.
Regards,
Mogens
Mogens Larsen
 

Re: A Gothic incident.

Postby Tord Romstad » 18 Apr 2004, 16:15

Geschrieben von:/Posted by: Tord Romstad at 18 April 2004 17:15:56:
Als Antwort auf:/In reply to: Re: A Gothic incident. geschrieben von:/posted by: Mogens Larsen at 18 April 2004 17:07:39:
Though I on principle dislike the idea of tablebases, ie. the introduction and distribution of cloned code, the reduction in playing time when five or less piece endings occur, is quite enjoyable when conducting tests or tournaments.
I have another matter that seems somewhat irratic. That would be the appreciated act of resigning in a lost position. Gothmog quite often prefers to be checkmated despite resignation being enabled.
I have a somewhat different view of this. Playing with tablebases enabled tends
to hide weaknesses and bugs in the engine's endgame eval. The weaknesses still
hurt the engine's endgame abilities when the tablebases are used, but they are
much harder to spot. Games played without TBs give me more valuable information
than games played with TBs.
If there is a very strong demand there is a small possibility that I will keep
TB support in Gothmog 0.4.8 and in my new engine, but unless some much more
compact code for tablebase probing appears it is not very likely.
Gothmog resigns whenever the last 5 moves have returned a score
Tord Romstad
 

Re: A Gothic incident.

Postby Sune Fischer » 18 Apr 2004, 17:17

Geschrieben von:/Posted by: Sune Fischer at 18 April 2004 18:17:02:
Als Antwort auf:/In reply to: Re: A Gothic incident. geschrieben von:/posted by: Tord Romstad at 18 April 2004 17:15:56:
Though I on principle dislike the idea of tablebases, ie. the introduction and distribution of cloned code, the reduction in playing time when five or less piece endings occur, is quite enjoyable when conducting tests or tournaments.
I have another matter that seems somewhat irratic. That would be the appreciated act of resigning in a lost position. Gothmog quite often prefers to be checkmated despite resignation being enabled.
I have a somewhat different view of this. Playing with tablebases enabled tends
to hide weaknesses and bugs in the engine's endgame eval. The weaknesses still
hurt the engine's endgame abilities when the tablebases are used, but they are
much harder to spot. Games played without TBs give me more valuable information
than games played with TBs.
If there is a very strong demand there is a small possibility that I will keep
TB support in Gothmog 0.4.8 and in my new engine, but unless some much more
compact code for tablebase probing appears it is not very likely.
Gothmog resigns whenever the last 5 moves have returned a scorethere is a mate score. Perhaps I should make it possible to configure this from
the init file.
Tord
I turn TBs off when I develop the engine and turn them on when I release it.
I just want the released version to be as strong as possible, bugs I expect to find myself.
I think 5 moves with -7 is a little too restictive. Often a mate score will be found before the 5 moves are up, so the engine will practicly never resign.
To save as much time as possible I think it is important to resign once the score shows the game is definitely lost, usually that happens around -4 to -5 in games with good engines.
I typicly use -6.5 myself, mostly because it still misevaluates some positions and I don't want to resign in some drawish fortress position for example.
-S.
Sune Fischer
 

Re: A Gothic incident.

Postby Uri Blass » 18 Apr 2004, 17:28

Geschrieben von:/Posted by: Uri Blass at 18 April 2004 18:28:38:
Als Antwort auf:/In reply to: Re: A Gothic incident. geschrieben von:/posted by: Sune Fischer at 18 April 2004 18:17:02:
Though I on principle dislike the idea of tablebases, ie. the introduction and distribution of cloned code, the reduction in playing time when five or less piece endings occur, is quite enjoyable when conducting tests or tournaments.
I have another matter that seems somewhat irratic. That would be the appreciated act of resigning in a lost position. Gothmog quite often prefers to be checkmated despite resignation being enabled.
I have a somewhat different view of this. Playing with tablebases enabled tends
to hide weaknesses and bugs in the engine's endgame eval. The weaknesses still
hurt the engine's endgame abilities when the tablebases are used, but they are
much harder to spot. Games played without TBs give me more valuable information
than games played with TBs.
If there is a very strong demand there is a small possibility that I will keep
TB support in Gothmog 0.4.8 and in my new engine, but unless some much more
compact code for tablebase probing appears it is not very likely.
Gothmog resigns whenever the last 5 moves have returned a score>there is a mate score. Perhaps I should make it possible to configure this from
the init file.
Tord
I turn TBs off when I develop the engine and turn them on when I release it.
I just want the released version to be as strong as possible, bugs I expect to find myself.
I think 5 moves with -7 is a little too restictive. Often a mate score will be found before the 5 moves are up, so the engine will practicly never resign.
To save as much time as possible I think it is important to resign once the score shows the game is definitely lost, usually that happens around -4 to -5 in games with good engines.
I think that -4 of engine A can be equivalent to -7 of engine B so you cannot say if -7 is too restrictive.
Uri
Uri Blass
 

Re: A Gothic incident.

Postby Sune Fischer » 18 Apr 2004, 17:33

Geschrieben von:/Posted by: Sune Fischer at 18 April 2004 18:33:49:
Als Antwort auf:/In reply to: Re: A Gothic incident. geschrieben von:/posted by: Tord Romstad at 18 April 2004 17:07:37:

It more than doubles the size of my exe, currently it goes from 380kb to 840kb(!!) with support for the new 6-man.
That's almost 500kb for some code that is hardly ever used, quite rediculous I agree, but I haven't really noticed any speed difference between the two so I don't think there is much of a price to pay.
Wow, that's huge!
Gothmog grows from 130 to 200 kilobytes when I enable tablebases.
I also haven't noticed a speed difference, but wasting 70 kilobytes on something
which doesn't increase the strength of the engine at all is simply too ugly for
my taste. I don't like to add huge chunks of code or data unless it makes the
engine play much better.
Tord
Wow that's tiny! :)
Are you using the new format that supports the new split 6-man tables?
I think even the old format was more than 200 kb for me so you
getting 70 is still 'wow'.
It's not so much for the strength, it's just as much because I just find it
to be a nice feature, ie. announcing mate in 53 in an endgame is pretty 'cool' :)
Getting a small binary is fine but as long as it doesn't hurt performance I
see no reason to care about it. The working set within the program is pretty
small anyway, the makemove(), eval(),movegen() and search() put together is
less than 100kb, probably closer to 50 kb.

The rest is just libraries, book tools and other scaresly used code.
-S.
Sune Fischer
 

Re: A Gothic incident.

Postby Sune Fischer » 18 Apr 2004, 17:43

Geschrieben von:/Posted by: Sune Fischer at 18 April 2004 18:43:41:
Als Antwort auf:/In reply to: Re: A Gothic incident. geschrieben von:/posted by: Uri Blass at 18 April 2004 18:28:38:

I think 5 moves with -7 is a little too restictive. Often a mate score will be found before the 5 moves are up, so the engine will practicly never resign.
To save as much time as possible I think it is important to resign once the score shows the game is definitely lost, usually that happens around -4 to -5 in games with good engines.
I think that -4 of engine A can be equivalent to -7 of engine B so you cannot say if -7 is too restrictive.
Uri
I didn't say that exactly, what I was refering to was the 5 consequtive moves
with a score of -7.
The point is when you are at -7 your next score will be -8 then -10 then -12
then mated in X. It usually goes pretty fast once you are in that kind of
trouble.
You can however hang around -4 for a long time, in a game which is completely
lost. It just takes the other guy another 15-20 moves to get you to -7.
But you're right of course -7 and -4 is just grabbed out of the blue, however
if I blunder a piece against a player of my own strength I usually resign
instantly.
There is no comming back from that unless he blunders also but he won't when he has a won game, and programs will do it even more seldomly.
-S.
Sune Fischer
 

Re: A Gothic tale....part I

Postby Roger Brown » 18 Apr 2004, 18:24

Geschrieben von:/Posted by: Roger Brown at 18 April 2004 19:24:11:
Als Antwort auf:/In reply to: Re: A Gothic tale....part I geschrieben von:/posted by: Tord Romstad at 18 April 2004 15:37:12:
I don't think I ever claimed to know *nothing*. :-)
255 or 256 out of 300 in WAC is catastrophically bad, unless the tests were
done on a 386 or some similar ancient and outdated hardware. Something must
be very wrong here. How did you run the test?
Tord

Will painfully little do?
:-)



Hey, leave my outdated 800 mhz, 512 mb ram, Pentium III Windows ME machine alone. You have hurt its feelings. There, there, daddy won't ever test Tord's engine on you ever again...
I used Gothmog as a UCI engine in Arena, 50 mb hash, book and egtb's enabled, 10 seconds per position. Both versions ran one after the other.
While I am here, any particular opponent(s) or setting you want to use for the beta?
I have to go now, my ancient hardware needs me.
Later.
Roger Brown
 

Re: A Gothic tale....part I

Postby Tord Romstad » 18 Apr 2004, 18:45

Geschrieben von:/Posted by: Tord Romstad at 18 April 2004 19:45:05:
Als Antwort auf:/In reply to: Re: A Gothic tale....part I geschrieben von:/posted by: Roger Brown at 18 April 2004 19:24:11:
I don't think I ever claimed to know *nothing*. :-)
255 or 256 out of 300 in WAC is catastrophically bad, unless the tests were
done on a 386 or some similar ancient and outdated hardware. Something must
be very wrong here. How did you run the test?
Tord
Will painfully little do?
:-)

Hey, leave my outdated 800 mhz, 512 mb ram, Pentium III Windows ME machine alone. You have hurt its feelings. There, there, daddy won't ever test Tord's engine on you ever again...
I used Gothmog as a UCI engine in Arena, 50 mb hash, book and egtb's enabled, 10 seconds per position. Both versions ran one after the other.
While I am here, any particular opponent(s) or setting you want to use for the beta?
Yes, that would do. In fact, it is no exaggeration to claim that the entire
body of published theory about computer chess is very small and inadequate.
Except for a handful of professionals who guard their secrets carefully, we
all know painfully little.
A PIII 800 MHz should be OK. I would expect Gothmog to score about 295/300 in
WAC at 5 seconds/position on such a machine.
What makes this even more strange is that your ECMGCP results are excellent.
Solving 136 ECMGCP positions and only 256 WAC positions is really insane.
What scores do other engines achieve in WAC on your machine?
Feel free to choose any engine(s) from those I cannot run on my Linux box.
I have Arasan, Beowulf, Butcher, Chezzz, Comet, Crafty, Djinn, DrunkenMaster,
Faile, Fortress, Fruit, Gaviota, GK, Gnuchess, GreKo, OliThink, Pepito,
Phalanx, SmarThink and Yace here (plus one other engine which I don't
want to mention by name, because its author probably doesn't want to receive
lots of requests for a Linux binary).
Tord
Tord Romstad
 

Re: A Gothic incident.

Postby Tord Romstad » 18 Apr 2004, 18:53

Geschrieben von:/Posted by: Tord Romstad at 18 April 2004 19:53:48:
Als Antwort auf:/In reply to: Re: A Gothic incident. geschrieben von:/posted by: Sune Fischer at 18 April 2004 18:33:49:
It more than doubles the size of my exe, currently it goes from 380kb to 840kb(!!) with support for the new 6-man.
That's almost 500kb for some code that is hardly ever used, quite rediculous I agree, but I haven't really noticed any speed difference between the two so I don't think there is much of a price to pay.
Wow, that's huge!
Gothmog grows from 130 to 200 kilobytes when I enable tablebases.
I also haven't noticed a speed difference, but wasting 70 kilobytes on something
which doesn't increase the strength of the engine at all is simply too ugly for
my taste. I don't like to add huge chunks of code or data unless it makes the
engine play much better.
Wow that's tiny! :)
Are you using the new format that supports the new split 6-man tables?
I think even the old format was more than 200 kb for me so you
getting 70 is still 'wow'.
It's not so much for the strength, it's just as much because I just find it
to be a nice feature, ie. announcing mate in 53 in an endgame is pretty 'cool' :)
Getting a small binary is fine but as long as it doesn't hurt performance I
see no reason to care about it.
The working set within the program is pretty
small anyway, the makemove(), eval(),movegen() and search() put together is
less than 100kb, probably closer to 50 kb.
I have no idea. I didn't even know there was more than one version of the TB
probing code.
Strange. Does gcc generate much more compact code than other compilers?
Not in my eyes. As long as the engine hasn't computed the whole mating
line itself, the result simply doesn't count.
A question of aesthetics, I think. If I can reduce the size of the executable
by almost 50% with no noticable drop in playing strength, I would almost
always do so.
It's more in my engine, I'm afraid, partly because the code is poorly
designed. In the eval and move generator, I have huge chunks of code
which is written separately for white and black. This makes my
evaluation function almost twice as big as it should have been. :-(
Tord
Tord Romstad
 

Re: A Gothic incident.

Postby Sune Fischer » 18 Apr 2004, 19:37

Geschrieben von:/Posted by: Sune Fischer at 18 April 2004 20:37:48:
Als Antwort auf:/In reply to: Re: A Gothic incident. geschrieben von:/posted by: Tord Romstad at 18 April 2004 19:53:48:
It's not so much for the strength, it's just as much because I just find it
to be a nice feature, ie. announcing mate in 53 in an endgame is pretty 'cool' :)
Getting a small binary is fine but as long as it doesn't hurt performance I
see no reason to care about it.
The working set within the program is pretty
small anyway, the makemove(), eval(),movegen() and search() put together is
less than 100kb, probably closer to 50 kb.
Not in my eyes. As long as the engine hasn't computed the whole mating
line itself, the result simply doesn't count.
A question of aesthetics, I think. If I can reduce the size of the executable
by almost 50% with no noticable drop in playing strength, I would almost
always do so.
It's more in my engine, I'm afraid, partly because the code is poorly
designed. In the eval and move generator, I have huge chunks of code
which is written separately for white and black. This makes my
evaluation function almost twice as big as it should have been. :-(
Tord
Whether you show a +9 or a mate value is not significant IMO, aestheticly it is just more pleasing to get a mate value.
Is it cheating to use code you haven't written?
Yes in a way it is, I prefer not to use books and egtbs myself for that
reason, but generally I want to enable the user to do everything, then
he can decide for himself what is 'morally' correct.
I agree with the aesthetics, but my feeling is to H*ll with that, priority
number 1 is a super strong engine and no silly aesthetics must stand in it's
way! :)
I really want to add a lot of special cases, pattern detection, endgame eval.
All of that is bound to bloat the binary quite a bit, with each segment hardly
producing any noticable improvement.
I could also remove the fancy SAN printing, remove UCI, remove pgn, remove book support, remove logfile, remove threads and future support for SMP, write it in C instead of C++ etc.
None of that is essentially needed so I could trim it down quite a bit, but the whole project would be a lot less fun to me if I did.
You can try and macro out your functions and see how much it decreases the size.
If I macro out my search including nextmove() it goes down by 12 kb, also 12 kb for the makemove and 20kb for the primary evaluation.
Those are already the biggest hitters in 44 kb, so within 100kb total is almost a certainty.
-S.
Sune Fischer
 

Re: A Gothic incident.

Postby Uri Blass » 18 Apr 2004, 20:01

Geschrieben von:/Posted by: Uri Blass at 18 April 2004 21:01:59:
Als Antwort auf:/In reply to: Re: A Gothic incident. geschrieben von:/posted by: Sune Fischer at 18 April 2004 18:43:41:
I think 5 moves with -7 is a little too restictive. Often a mate score will be found before the 5 moves are up, so the engine will practicly never resign.
To save as much time as possible I think it is important to resign once the score shows the game is definitely lost, usually that happens around -4 to -5 in games with good engines.
I think that -4 of engine A can be equivalent to -7 of engine B so you cannot say if -7 is too restrictive.
I didn't say that exactly, what I was refering to was the 5 consequtive moves
with a score of -7.
The point is when you are at -7 your next score will be -8 then -10 then -12
then mated in X. It usually goes pretty fast once you are in that kind of
trouble.
You can however hang around -4 for a long time, in a game which is completely
lost. It just takes the other guy another 15-20 moves to get you to -7.
But you're right of course -7 and -4 is just grabbed out of the blue, however
if I blunder a piece against a player of my own strength I usually resign
instantly.
There is no comming back from that unless he blunders also but he won't when he has a won game, and programs will do it even more seldomly.
-S.
It is dependent on the position and other factors.
I may decide not to resign when I am a piece down and the decision if to do it is dependent on other factors including the rating of my opponent and the times(in blitz games I could even win games when I was a queen down when the opponent lost on time).
Uri
Uri Blass
 

Re: A Gothic incident.

Postby Tord Romstad » 18 Apr 2004, 21:22

Geschrieben von:/Posted by: Tord Romstad at 18 April 2004 22:22:13:
Als Antwort auf:/In reply to: Re: A Gothic incident. geschrieben von:/posted by: Sune Fischer at 18 April 2004 20:37:48:
It's not so much for the strength, it's just as much because I just find it
to be a nice feature, ie. announcing mate in 53 in an endgame is pretty 'cool' :)
Not in my eyes. As long as the engine hasn't computed the whole mating
line itself, the result simply doesn't count.
A question of aesthetics, I think. If I can reduce the size of the executable
by almost 50% with no noticable drop in playing strength, I would almost
always do so.
Whether you show a +9 or a mate value is not significant IMO, aestheticly it is just more pleasing to get a mate value.
Is it cheating to use code you haven't written?
I agree with the aesthetics, but my feeling is to H*ll with that, priority
number 1 is a super strong engine and no silly aesthetics must stand in it's
way! :)
I really want to add a lot of special cases, pattern detection, endgame eval.
All of that is bound to bloat the binary quite a bit, with each segment hardly
producing any noticable improvement.
I could also remove the fancy SAN printing, remove UCI, remove pgn, remove book support, remove logfile, remove threads and future support for SMP, write it in C instead of C++ etc.
None of that is essentially needed so I could trim it down quite a bit, but the whole project would be a lot less fun to me if I did.
You can try and macro out your functions and see how much it decreases the size.
If I macro out my search including nextmove() it goes down by 12 kb, also 12 kb for the makemove and 20kb for the primary evaluation.
Those are already the biggest hitters in 44 kb, so within 100kb total is almost a certainty.
I don't really think so, and it is not really the reason why I don't regard EGTB mate
announcements as "cool". It would be no more cool if I had written the EGTB code myself.
The point is that the engine didn't really see the mate, it just looked up a value from some
big table. In my eyes, a mate announment doesn't "count" if the engine is unable to calculate
the entire line to mate and all relevant sidelines.
I agree, but only to a certain extent. I would happily double the size of my code if it
would give me 100 or even 50 Elo points, but not if it would give me 10 or 20 points.
In the case of EGTBs, I think the difference is less than 10 points (at least when I add
enough endgame knowledge).
Yes, but it's not quite the same, IMHO. Each single special case doesn't produce any
noticable improvement, but it also doesn't produce a noticable increase in code size.
It's the *sum* of all the small special cases which bloats the binary, but the sum also
produces a significant increase in playing strength.
I could also save a bit here, but not very much. I use plain C, because I unfortunately have
a very strong allergy against C++. I don't use threads, simply because I lack the required
knowledge. SAN printing, UCI, book support and so on isn't that big in Gothmog.
Yes, fun should always have higher priority than everything else, of course. :-)
I guess looking at the .o files is also an accurate way to measure it (at least if you use many
and small source code files, like I do). It looks like the engine internals (eval, move generator,
search, hash table code, and so on) consume about 100kb, EGTB code 70kb, and the book
and IO code 30kb.
Tord
Tord Romstad
 

Re: A Gothic incident.

Postby Sune Fischer » 18 Apr 2004, 23:34

Geschrieben von:/Posted by: Sune Fischer at 19 April 2004 00:34:54:
Als Antwort auf:/In reply to: Re: A Gothic incident. geschrieben von:/posted by: Tord Romstad at 18 April 2004 22:22:13:
It's not so much for the strength, it's just as much because I just find it
to be a nice feature, ie. announcing mate in 53 in an endgame is pretty 'cool' :)
Not in my eyes. As long as the engine hasn't computed the whole mating
line itself, the result simply doesn't count.
Whether you show a +9 or a mate value is not significant IMO, aestheticly it is just more pleasing to get a mate value.
Is it cheating to use code you haven't written?
I agree with the aesthetics, but my feeling is to H*ll with that, priority
number 1 is a super strong engine and no silly aesthetics must stand in it's
way! :)
I really want to add a lot of special cases, pattern detection, endgame eval.
All of that is bound to bloat the binary quite a bit, with each segment hardly
producing any noticable improvement.
I could also remove the fancy SAN printing, remove UCI, remove pgn, remove book support, remove logfile, remove threads and future support for SMP, write it in C instead of C++ etc.
I don't really think so, and it is not really the reason why I don't regard EGTB mate
announcements as "cool". It would be no more cool if I had written the EGTB code myself.
The point is that the engine didn't really see the mate, it just looked up a value from some
big table. In my eyes, a mate announment doesn't "count" if the engine is unable to calculate
the entire line to mate and all relevant sidelines.
I agree, but only to a certain extent. I would happily double the size of my code if it
would give me 100 or even 50 Elo points, but not if it would give me 10 or 20 points.
In the case of EGTBs, I think the difference is less than 10 points (at least when I add
enough endgame knowledge).
Yes, but it's not quite the same, IMHO. Each single special case doesn't produce any
noticable improvement, but it also doesn't produce a noticable increase in code size.
It's the *sum* of all the small special cases which bloats the binary, but the sum also
produces a significant increase in playing strength.
I could also save a bit here, but not very much. I use plain C, because I unfortunately have
a very strong allergy against C++.
I guess looking at the .o files is also an accurate way to measure it (at least if you use many
and small source code files, like I do). It looks like the engine internals (eval, move generator,
search, hash table code, and so on) consume about 100kb, EGTB code 70kb, and the book
and IO code 30kb.
Tord
Now you are getting philosophical :)
One could say the same about a speculative sacrifice, that anything speculative "doesn't count" because it hasn't been seen by the search.
I think computers great ability to precompute information and then reuse it
later makes it aesteticly acceptable.
It is hardly any different from when Garry playes an instant Bxh6+ with a mating attack. He doesn't need to do many refuting calculations
because he has great experience with this attacking theme from similar
positions.
I really like the idea of having to find the moves over the board though, so
in a way I totally agree with you. It's just not entirely realistic to expect
this in chess where recognition is one of the key factors.
Normally I would not write 400kb of 'worthless' code and then keep it in the
engine, but for the EGTBs I'm willing to make an exception.
I guess I can understand why you want them out if you inspite of all of their neat exactness still considers them un-cool.
Should Eugene ever find the time to convert them to bitbases they
might contribute a bit more to strength. In that case you could be "forced" to
use them, just to even the playing field?
True. But I still think looking at the size of binary is irrelevant.
If you add 70kb and get a 10 elo increase, the result is still a stronger engine.
I could understand it if the 70 kb made the engine 5% slower and the net result
was zero improvement, but that is not the case, it is purely strength versus aesthetics.
It's a nobrainer for me, I would always take the Elo! :)
C'mon, C is just lame when you can do C plus plus so much more!
;)
Hehe, my perft.o is 69 kb, game.o is 105 kb and xboard.o is 110 kb.
Maybe I should see if I can figure out why these bloat so much, none of it is
speed critical but still.
-S.
Sune Fischer
 

Re: A Gothic incident.

Postby Tord Romstad » 19 Apr 2004, 09:11

Geschrieben von:/Posted by: Tord Romstad at 19 April 2004 10:11:13:
Als Antwort auf:/In reply to: Re: A Gothic incident. geschrieben von:/posted by: Sune Fischer at 19 April 2004 00:34:54:
Normally I would not write 400kb of 'worthless' code and then keep it in the
engine, but for the EGTBs I'm willing to make an exception.
I guess I can understand why you want them out if you inspite of all of their neat exactness still considers them un-cool.
Should Eugene ever find the time to convert them to bitbases they
might contribute a bit more to strength. In that case you could be "forced" to
use them, just to even the playing field?
I really want to add a lot of special cases, pattern detection, endgame eval.
All of that is bound to bloat the binary quite a bit, with each segment hardly
producing any noticable improvement.
I could also remove the fancy SAN printing, remove UCI, remove pgn, remove book support, remove logfile, remove threads and future support for SMP, write it in C instead of C++ etc.
Yes, but it's not quite the same, IMHO. Each single special case doesn't produce any
noticable improvement, but it also doesn't produce a noticable increase in code size.
It's the *sum* of all the small special cases which bloats the binary, but the sum also
produces a significant increase in playing strength.
I could also save a bit here, but not very much. I use plain C, because I unfortunately have
a very strong allergy against C++.
I guess looking at the .o files is also an accurate way to measure it (at least if you use many
and small source code files, like I do). It looks like the engine internals (eval, move generator,
search, hash table code, and so on) consume about 100kb, EGTB code 70kb, and the book
and IO code 30kb.
Tord
True. But I still think looking at the size of binary is irrelevant.
If you add 70kb and get a 10 elo increase, the result is still a stronger engine.
I could understand it if the 70 kb made the engine 5% slower and the net result
was zero improvement, but that is not the case, it is purely strength versus aesthetics.
It's a nobrainer for me, I would always take the Elo! :)
C'mon, C is just lame when you can do C plus plus so much more!
;)
Hehe, my perft.o is 69 kb, game.o is 105 kb and xboard.o is 110 kb.
"Un-cool" is a too strong word to describe my feelings. They are just not
sufficiently cool to justify the cost.
Possibly, but I would be reluctant to do so. You might be right that bitbases
would contribute more to playing strength than tablebases, but I still think
it is unwise to use them before your engine is able to play near-perfectly
in basic endgames on its own. Writing accurate evaluation functions for
basic endgames is tricky and time-consuming, but I think it is worth the
effort because it could help you learn principles which are useful even in
more complicated endgames.
So would I, if my engine were a few hundred Elo points stronger. But down
at Gothmog's level, a 10 Elo increase simply isn't that much, and can be
easily achieved without bloating the binary.
Yeah, C is definitely lame. But what can a poor man with an allergy against
C++ do if he wants his engine to be easily portable over a wide range of
platforms?
I really don't understand how your perft.o could be that big. Does it contain
only the perft() function, or lots of other code as well? I don't have perft
in Gothmog, but in Glaurung (my new engine), perft.o is 1084 bytes. The
code looks like this:

#include "glaurung.h"
int perft(int depth) {
move_t m;
int result = 0;
if(depth==0) return 1;

for(m=pick_move(); m; m=pick_move()) {
make_move(m);
if(!in_check(XSide)) result += perft(depth-1);
unmake_move(m);
}
return result;
}

Tord
Tord Romstad
 

Next

Return to Archive (Old Parsimony Forum)

Who is online

Users browsing this forum: No registered users and 24 guests