I have looked at the source code of multiple engines and have noticed that they save information from every single node (All,Cut, and PV nodes). However through testing, saving all nodes to the TT is a very clear loss for Nirvana. This leads me to believe that either there is a bug in my transposition table implementation or perhaps I am not using the information saved in the table to its fullest. My replacement scheme favors high depth, PV nodes that are from the current search.
A few stats that I obtained during this testing is that a TT cutoff occurs approximately 5-6% of the time and when a cutoff does not occur a TT move is able to be found 12-15% of the time. This means that TT entries from PV and Cut nodes are used in a lot more cases than All nodes because as we all know there is no best move in an All node.
Here is a test that I just ran between two versions of Nirvana. One that saves entries from every node (NirvanachessALL) and another that only saves the entry if there is a Best move. The testing conditions were 6" + 0.05" with a 2 MB hash table size in order to create some hash pressure.
Code: Select all
Rank Name Elo + - games score oppo. draws
1 Nirvanachess 18 7 7 5500 56% -18 43%
2 NirvanachessALL -18 7 7 5500 44% 18 43%
Has anybody else noticed something similar? If not and saving All nodes does help then is there something that you do specifically with All nodes in order to squeeze a little bit more mileage out of these entries?