Moderator: Andres Valverde
GeoffW wrote:Hi
I have been reading Ed Schr?ders page regarding calculating attack tables. I have coded up a version quite similar to that described by Ed. To test it and get it working I have currently just called the white & black table generation in my Eval function just after the lazy eval decision.
This allowed me to use it for a hopefully improved king safety calculation.
It wasnt a total surprise to find that it is very expensive on my nodes per second to generate this information. To make proper use of the time spent calculating the tables I really need to use it for more than just king safety. This is where I get a bit hazy and could use some advice please
Attack tables could be further used for
1) More Eval functions, eg Center control etc. The table generation can be left where it currently is for this addition
2) Fast in check and and checking move calculations. To make this work however I need to move the table generation earlier to maybe after the makemove function. This would cause more of a slowdown in nps
3) Further work could make the tables give a SEE feature, used for move ordering. The big snag with this is that table generation would have to be done for all moves at move generation. This means that we move the generation before any beta cutoffs and would cause a crushing slowdown in nps. If I moved this code into the move gen function I think I would need to measure speed in seconds per node
I wonder if Rebel does the attack table gen at move generation time, I am assuming it must do ?
Ply Eval Time kNode/s Principle Variation
1 71 0 1 f2f4
2 44 1 275 g5e4 d6c7
3 79 1 403 g5e4 d6c7 f2f3
4 50 4 728 g5e4 d6c7 f2f3 c8b7
5 72 14 870 c1d2 d6c6 f2f4 f7f6 g5e4
6 55 40 930 c1d2 c8d7 g5e4 d6c7 f2f3 e6e5 d4e5 g6e5
7 67 204 994 h2h4 d5f6 c2a4 h7h6 g5f3 d6c7 c1e3
8 52 490 988 h2h4 h7h6 g5e4 d6c7 h4h5 g6e7 f2f3 c8b7
9 71 864 1044 h2h4 h7h6 h4h5 h6g5 h5g6 f7f6 c2a4 d6c7 c1d2
10 49 4532 1049 h2h4 h7h6 h4h5 h6g5 h5g6 f7f6 c2a4 d6c7 c1e3 c8d7
Time: 45328 ms
Ply Eval Time kNode/s Principle Variation
1 106 0 1 f2f4
2 74 1 255 f2f4 f7f6
3 92 1 839 g5e4 d6c7 f2f3
4 69 6 560 h2h4 h7h6 h4h5 h6g5
5 95 15 638 h2h4 f7f6 g5e4 d6c7 f2f3
6 72 100 706 f2f3 c8d7 g5e4 d6c7 c1e3 f7f5
7 85 242 710 h2h4 d5f6 c2a4 h7h6 g5f3 d6c7 c1e3
8 77 976 699 b2b3 b6b5 h2h4 h7h6 h4h5 h6g5 h5g6 f7f6
9 100 1892 698 h2h4 h7h6 h4h5 h6g5 h5g6 f7f6 c2a4 d6c7 a4a3
10 84 6884 699 h2h4 h7h6 g5f3 c8a6 h4h5 g6e7 c1d2 a6b5 f3e5 e7f5
Time: 68844 ms
GeoffW wrote:The really infuriating thing is that a self test against the earlier non attack table version was much worse in real games, due presumably to the loss in nps. Yet when I tested again Kiwi the attack table version is much improved (20 points/32 with tables 15.5/32 without)
I hate it when that happens. Grrrrr
GeoffW wrote:Hello Pallav
Just did a quick measurement for my benchmark position
Nodes per second of attack table version is about 2/3 of previous version. See below (P4 2.2 Ghz)
GeoffW wrote:I am fairly happy to leave the attack table expense as it stands now as long as I dont have to move it too much earlier in the code and make the nps even worse. After adding the code I now get about 780knps from the opening position on a P4 2.2 Ghz, so not too unacceptable
Anthony Cozzie wrote:3. Do checks in q-search
Yes, I never managed to get something from recaptures except more code.4. Throw out all useless extensions esp. recaptures
Peter Fendrich wrote:Yeah easy, in short write a better programAnthony Cozzie wrote:3. Do checks in q-search
How does this improve branching factor?Yes, I never managed to get something from recaptures except more code.4. Throw out all useless extensions esp. recaptures
/Peter
Not really. It is in the tree before the Qsearch is reached. The main idea is that equal exchanges can be extended. Such as: if ("this is a capture" && "parent was a capture of same value" && "materialvalue is re-established") depth += RecapExtend;Dann Corbit wrote:Recaptures is just another word for "quiescent search" no?
Dann Corbit wrote:Peter Fendrich wrote:Yeah easy, in short write a better programAnthony Cozzie wrote:3. Do checks in q-search
How does this improve branching factor?Yes, I never managed to get something from recaptures except more code.4. Throw out all useless extensions esp. recaptures
/Peter
Recaptures is just another word for "quiescent search" no?
No wonder then, that a program with a good quiescent search sees very little benefit from recaptures [except singular recaptures, which are practically free since bf is 1.00]
OTOH if there is a good noncapture move after the recapture that makes a big difference, it's very often a check, so an engine doing checks in qsearch doesn't need the recapture extensions so much.
Return to Programming and Technical Discussions
Users browsing this forum: No registered users and 31 guests