Code: Select all
Perft(03): 8902, time: 0.201 s
Perft(04): 197281, time: 0.001 s
Perft(05): 4865609, time: 0.001 s
Perft(06): 119060324, time: 0.002 s
Perft(07): 3195901860, time: 0.016 s
Perft(08): 84998978956, time: 0.206 s
Perft(09): 2439530234167, time: 1.414 s
Perft(10): 69352859712417, time: 15.278 s
Perft(11): 2097651003696806, time: 179.091 s
Perft(12): 62854969236701747, time: 2932.64 s
Perft(13): 1981066775000396239, time: 42792.7 s
..b1-a3 1988096314966752669
..g1-f3 2585178594020547799
..b1-c3 2638654908094167513
..a2-a3 1707945110805813310
..g1-h3 2022544576756325295
..b2-b3 2286406377370528139
..c2-c3 2666334464745721380
..f2-f3 1359948551007941806
..d2-d3 4459055881158216540
..g2-g3 2388698250037891063
..h2-h3 1691016253163166371
..a2-a4 2493115507450124588
..b2-b4 2297640117530334747
..e2-e3 7478732807317823667
..c2-c4 3067868595132318179
..f2-f4 1905689484049474095
..g2-g4 2050748957027119617
..h2-h4 2546461593049574382
..d2-d4 6636612996377425812
..e2-e4 7614272181524252025
Perft(14):61885021521585518997, time: 795802 s
https://raw.githubusercontent.com/ankan ... erft14.txt
After Steven Edwards reported mismatches due to false transposition table positives caused by 64 bit hash signatures, I updated my program to use 128 bit hashes. I also made some performance improvements and changes to utilize multiple GPUs in the machine if available. This run was performed on a machine with 3 Nvidia Titan X GPUs.
Instead of Steven's approach of computing perft(7) of all 96400068 unique(7) positions, I decided to compute perft using the regular method which even though is slightly slower it has the advantage of obtaining divided counts.
Unfortunately my result doesn't match the value reported by Peter Österlund back in 2013. With 128 bit hashes, it's unlikely to be caused by a false positive/hash collision but I can't rule out bugs in my program or random bit flips due to hardware failure/instability.
I am going to try one more time using unique(8) or unique(9) positions - or use the same regular method but using different set of random zobrist keys to rule out possibility of hardware instability.