Perft 12 in progress

Discussion of chess software programming and technical issues.

Moderators: hgm, Rebel, chrisw

yolin
Posts: 30
Joined: Thu Mar 30, 2006 6:12 pm

Re: Perft 12 in progress

Post by yolin »

The relevant integer sequence from the OEIS is A048987:

http://oeis.org/A048987

info contains quite a few useful links
User avatar
phhnguyen
Posts: 1434
Joined: Wed Apr 21, 2010 4:58 am
Location: Australia
Full name: Nguyen Hong Pham

Re: Perft 12 in progress

Post by phhnguyen »

I am wondering why your perft 12 is still hard when you have been using transposition table?

If Paul Byrne spent few months of computing I guess you need only few days (if not few hours) with the help of that table. What am I missing here?

I have been managing to compute perft 12 too but for Xiangqi. That game has the branch factor of 40 (in the opening period), thus 250 times as many nodes as chess. Of course I don't want to spend 250 x few months ;)
User avatar
sje
Posts: 4675
Joined: Mon Mar 13, 2006 7:43 pm

Re: Perft 12 in progress

Post by sje »

There's not much that I can say with respect to comparisons as I don't know the details of Byrne's machine set. At the moment I have no machines working on this as the power failed earlier today and many days of calculation were lost.
User avatar
sje
Posts: 4675
Joined: Mon Mar 13, 2006 7:43 pm

Perft(11) after 1 e3

Post by sje »

Some progress on the Perft(12) project:

Here is the result of Perft(11) after 1 e3:

Code: Select all

[] df (e3)
rnbqkbnr/pppppppp/8/8/8/4P3/PPPP1PPP/RNBQKBNR b KQkq - 0 1
[] emptran 11
Na6 239,943,556,047,078
Nh6 243,310,179,411,272
Nc6 318,722,425,459,895
Nf6 313,331,757,312,906
a6 218,358,479,391,578
b5 256,724,302,115,375
b6 273,239,472,480,302
a5 297,335,076,097,783
c5 354,531,636,092,380
c6 334,755,104,610,885
d6 485,607,707,386,643
f5 205,179,880,627,156
d5 671,948,866,751,052
f6 155,423,014,653,692
g5 248,783,054,680,890
g6 290,918,356,782,757
h6 204,483,520,468,186
h5 308,640,652,870,057
e5 860,665,550,999,882
e6 878,728,577,300,031
Depth: 11   Count: 7,160,631,171,539,800   Elapsed: 935154  (7.65717e+09 Hz / 1.30597e-10 s)
Twelve down, eight to go.
User avatar
sje
Posts: 4675
Joined: Mon Mar 13, 2006 7:43 pm

Partial results posted

Post by sje »

For each of the twenty ply 0 moves, I'm uploading the result of its perft(11) calculation giving the twenty perft(10) results for each ply 1 move. Together these form the 400 perft(10) subtotals needed to make perft(12) and are an important resource for anyone wishing to verify or refute my calculations.

The files are direct text captures and include the running time of each calculation.

(When I say "ply N", I mean a move that originates from ply number N. So root moves are ply zero moves. I admit the terminology may be different from what some other authors use.)

See: https://public.me.com/chessnotation -> Perft -> Perf12
User avatar
sje
Posts: 4675
Joined: Mon Mar 13, 2006 7:43 pm

Re: Partial results posted

Post by sje »

I have from zero to three machines working on perft(12). At this time, the ply 0 moves getting the perft(11) treatment are d4, e4, and f3. When these are completed, the remaining moves are f4, g3, g4, h3, and h4. As can be expected, the center pawn counts take the longest to do. I hope to see everything wrapped up by the middle of April.

Now if someone were to donate a new twelve core Mac Pro with 96 GB RAM, then things would go much, much faster. :D

If the final result matches Byrne's calculation (62,854,969,236,701,747), then that's good. If not, I'd like to get some help from others to verify my results or to find where there might be an error.

Once perft(12) is finalized, we could make an attempt at perft(13). My estimate of the result is just a bit under 2^61, so it could be done with 64 bit arithmetic for summation although hash codes would need to be longer than 64 bits. (I'm using 128 bit codes.) Maybe the best way to do the calculation would be to set up a distributed computing project and split the problem into 5,362 perft(10) problems (one for each distinct ply 3 position) and combine these (some appear more than once) to make the grand total. Each perft(10) calculation would take between a few hours and a few days on modern hardware. Maybe about five years of total CPU/core time.
SuneF
Posts: 127
Joined: Thu Sep 17, 2009 11:19 am

Re: Partial results posted

Post by SuneF »

I was bored one evening when I saw this thread.
I decided to do some stats on perft 3 to perft 6.

Code: Select all

Perft depth, unique positions, average mult, highest mult
3,    5362,  1.6602014173816,   4
4,   72064,  2.7375804840142,  16
5,  821845,  5.9203487275581,  87
6, 9393870, 12.6742571485447, 479
To compute perft 13 it could be distributed into 72064 unique perft 9 jobs at perft 4. One big problem though is that 64 bit keys would not be enough so I couldn't trust my own program without rewriting. Another big problem is that distributing the job will be relatively inefficient from a hashing perspective.

For perft 6, here are the 100 most frequent positions:

479 rnbqkbnr/pppp1ppp/4p3/8/4P3/8/PPPP1PPP/RNBQKBNR w KQkq -
479 rnbqkbnr/pppp1ppp/4p3/8/8/4P3/PPPP1PPP/RNBQKBNR w KQkq -
479 rnbqkbnr/pppp1ppp/8/4p3/4P3/8/PPPP1PPP/RNBQKBNR w KQkq -
479 rnbqkbnr/pppp1ppp/8/4p3/8/4P3/PPPP1PPP/RNBQKBNR w KQkq -
421 rnbqkbnr/ppp1pppp/8/3p4/4P3/8/PPPP1PPP/RNBQKBNR w KQkq -
421 rnbqkbnr/ppp1pppp/8/3p4/8/4P3/PPPP1PPP/RNBQKBNR w KQkq -
412 rnbqkbnr/pppp1ppp/8/4p3/3P4/8/PPP1PPPP/RNBQKBNR w KQkq -
412 rnbqkbnr/pppp1ppp/4p3/8/3P4/8/PPP1PPPP/RNBQKBNR w KQkq -
400 rnbqkbnr/ppp1pppp/3p4/8/4P3/8/PPPP1PPP/RNBQKBNR w KQkq -
400 rnbqkbnr/ppp1pppp/3p4/8/8/4P3/PPPP1PPP/RNBQKBNR w KQkq -
395 rnbqkbnr/ppp1pppp/8/3p4/3P4/8/PPP1PPPP/RNBQKBNR w KQkq -
391 rnbqkbnr/pppp1ppp/8/4p3/8/3P4/PPP1PPPP/RNBQKBNR w KQkq -
391 rnbqkbnr/pppp1ppp/4p3/8/8/3P4/PPP1PPPP/RNBQKBNR w KQkq -
375 rnbqkbnr/ppp1pppp/3p4/8/3P4/8/PPP1PPPP/RNBQKBNR w KQkq -
375 rnbqkbnr/ppp1pppp/8/3p4/8/3P4/PPP1PPPP/RNBQKBNR w KQkq -
356 rnbqkbnr/ppp1pppp/3p4/8/8/3P4/PPP1PPPP/RNBQKBNR w KQkq -
306 rnbqkbnr/pppp1ppp/8/4p3/2P5/8/PP1PPPPP/RNBQKBNR w KQkq -
306 rnbqkbnr/pppp1ppp/8/4p3/8/6P1/PPPPPP1P/RNBQKBNR w KQkq -
306 rnbqkbnr/pppp1ppp/8/4p3/6P1/8/PPPPPP1P/RNBQKBNR w KQkq -
306 rnbqkbnr/pppp1ppp/4p3/8/2P5/8/PP1PPPPP/RNBQKBNR w KQkq -
306 rnbqkbnr/pppp1ppp/4p3/8/6P1/8/PPPPPP1P/RNBQKBNR w KQkq -
306 rnbqkbnr/pppp1ppp/4p3/8/8/6P1/PPPPPP1P/RNBQKBNR w KQkq -
305 rnbqkbnr/pppp1ppp/4p3/8/8/1P6/P1PPPPPP/RNBQKBNR w KQkq -
305 rnbqkbnr/pppp1ppp/8/4p3/8/1P6/P1PPPPPP/RNBQKBNR w KQkq -
305 rnbqkbnr/pp1ppppp/8/2p5/4P3/8/PPPP1PPP/RNBQKBNR w KQkq -
305 rnbqkbnr/pp1ppppp/8/2p5/8/4P3/PPPP1PPP/RNBQKBNR w KQkq -
305 rnbqkbnr/pppppp1p/6p1/8/4P3/8/PPPP1PPP/RNBQKBNR w KQkq -
305 rnbqkbnr/pppppp1p/6p1/8/8/4P3/PPPP1PPP/RNBQKBNR w KQkq -
305 rnbqkbnr/pppppp1p/8/6p1/4P3/8/PPPP1PPP/RNBQKBNR w KQkq -
305 rnbqkbnr/pppppp1p/8/6p1/8/4P3/PPPP1PPP/RNBQKBNR w KQkq -
304 rnbqkbnr/p1pppppp/1p6/8/4P3/8/PPPP1PPP/RNBQKBNR w KQkq -
304 rnbqkbnr/p1pppppp/1p6/8/8/4P3/PPPP1PPP/RNBQKBNR w KQkq -
287 rnbqkbnr/p1pppppp/8/1p6/4P3/8/PPPP1PPP/RNBQKBNR w KQkq -
287 rnbqkbnr/p1pppppp/8/1p6/8/4P3/PPPP1PPP/RNBQKBNR w KQkq -
286 rnbqkbnr/pppp1ppp/8/4p3/8/2N5/PPPPPPPP/R1BQKBNR w KQkq -
286 rnbqkbnr/pppp1ppp/4p3/8/8/2N5/PPPPPPPP/R1BQKBNR w KQkq -
284 rnbqkbnr/pppp1ppp/8/4p3/8/2P5/PP1PPPPP/RNBQKBNR w KQkq -
284 rnbqkbnr/pppp1ppp/4p3/8/8/2P5/PP1PPPPP/RNBQKBNR w KQkq -
284 r1bqkbnr/pppppppp/2n5/8/4P3/8/PPPP1PPP/RNBQKBNR w KQkq -
284 r1bqkbnr/pppppppp/2n5/8/8/4P3/PPPP1PPP/RNBQKBNR w KQkq -
283 rnbqkbnr/pp1ppppp/2p5/8/8/4P3/PPPP1PPP/RNBQKBNR w KQkq -
283 rnbqkbnr/pp1ppppp/2p5/8/4P3/8/PPPP1PPP/RNBQKBNR w KQkq -
280 rnbqkbnr/pppp1ppp/8/4p3/1P6/8/P1PPPPPP/RNBQKBNR w KQkq -
280 rnbqkbnr/pppp1ppp/4p3/8/1P6/8/P1PPPPPP/RNBQKBNR w KQkq -
279 rnbqkbnr/pppp1ppp/4p3/8/8/5N2/PPPPPPPP/RNBQKB1R w KQkq -
278 rnbqkbnr/ppp1pppp/8/3p4/1P6/8/P1PPPPPP/RNBQKBNR w KQkq -
278 rnbqkbnr/ppp1pppp/8/3p4/8/1P6/P1PPPPPP/RNBQKBNR w KQkq -
278 rnbqkb1r/pppppppp/5n2/8/8/4P3/PPPP1PPP/RNBQKBNR w KQkq -
277 rnbqkbnr/ppp1pppp/8/3p4/8/6P1/PPPPPP1P/RNBQKBNR w KQkq -
277 rnbqkbnr/p1pppppp/8/1p6/3P4/8/PPP1PPPP/RNBQKBNR w KQkq -
277 rnbqkbnr/p1pppppp/1p6/8/3P4/8/PPP1PPPP/RNBQKBNR w KQkq -
276 rnbqkbnr/pppppp1p/6p1/8/3P4/8/PPP1PPPP/RNBQKBNR w KQkq -
267 rnbqkbnr/ppp1pppp/8/3p4/2P5/8/PP1PPPPP/RNBQKBNR w KQkq -
264 rnbqkbnr/ppp1pppp/3p4/8/8/1P6/P1PPPPPP/RNBQKBNR w KQkq -
264 rnbqkbnr/ppp1pppp/3p4/8/1P6/8/P1PPPPPP/RNBQKBNR w KQkq -
263 rnbqkbnr/ppp1pppp/3p4/8/8/6P1/PPPPPP1P/RNBQKBNR w KQkq -
263 rnbqkbnr/p1pppppp/1p6/8/8/3P4/PPP1PPPP/RNBQKBNR w KQkq -
263 rnbqkbnr/p1pppppp/8/1p6/8/3P4/PPP1PPPP/RNBQKBNR w KQkq -
262 rnbqkbnr/pppppp1p/6p1/8/8/3P4/PPP1PPPP/RNBQKBNR w KQkq -
261 rnbqkbnr/pppp1ppp/8/4p3/8/5N2/PPPPPPPP/RNBQKB1R w KQkq -
260 rnbqkbnr/ppp1pppp/8/3p4/8/5N2/PPPPPPPP/RNBQKB1R w KQkq -
259 rnbqkbnr/pppppp1p/8/6p1/3P4/8/PPP1PPPP/RNBQKBNR w KQkq -
258 rnbqkb1r/pppppppp/5n2/8/3P4/8/PPP1PPPP/RNBQKBNR w KQkq -
257 rnbqkbnr/pp1ppppp/8/2p5/3P4/8/PPP1PPPP/RNBQKBNR w KQkq -
256 rnbqkb1r/pppppppp/5n2/8/4P3/8/PPPP1PPP/RNBQKBNR w KQkq -
254 rnbqkbnr/ppp1pppp/3p4/8/2P5/8/PP1PPPPP/RNBQKBNR w KQkq -
252 rnbqkbnr/ppp1pppp/8/3p4/6P1/8/PPPPPP1P/RNBQKBNR w KQkq -
247 rnbqkbnr/ppp1pppp/3p4/8/8/5N2/PPPPPPPP/RNBQKB1R w KQkq -
247 rnbqkbnr/ppp1pppp/8/3p4/8/2P5/PP1PPPPP/RNBQKBNR w KQkq -
245 rnbqkbnr/ppp1pppp/3p4/8/8/2N5/PPPPPPPP/R1BQKBNR w KQkq -
245 rnbqkbnr/pppppp1p/8/6p1/8/3P4/PPP1PPPP/RNBQKBNR w KQkq -
245 rnbqkb1r/pppppppp/5n2/8/8/3P4/PPP1PPPP/RNBQKBNR w KQkq -
244 rnbqkbnr/pp1ppppp/8/2p5/8/3P4/PPP1PPPP/RNBQKBNR w KQkq -
244 r1bqkbnr/pppppppp/2n5/8/8/3P4/PPP1PPPP/RNBQKBNR w KQkq -
242 rnbqkbnr/ppp1pppp/8/3p4/8/2N5/PPPPPPPP/R1BQKBNR w KQkq -
238 rnbqkbnr/ppp1pppp/3p4/8/6P1/8/PPPPPP1P/RNBQKBNR w KQkq -
237 rnbqkbnr/pppp1ppp/4p3/8/P7/8/1PPPPPPP/RNBQKBNR w KQkq -
237 rnbqkbnr/pppp1ppp/8/4p3/P7/8/1PPPPPPP/RNBQKBNR w KQkq -
237 rnbqkbnr/pp1ppppp/2p5/8/3P4/8/PPP1PPPP/RNBQKBNR w KQkq -
237 rnbqkbnr/1ppppppp/8/p7/4P3/8/PPPP1PPP/RNBQKBNR w KQkq -
237 rnbqkbnr/1ppppppp/8/p7/8/4P3/PPPP1PPP/RNBQKBNR w KQkq -
237 r1bqkbnr/pppppppp/2n5/8/3P4/8/PPP1PPPP/RNBQKBNR w KQkq -
236 rnbqkbnr/pppp1ppp/4p3/8/8/7N/PPPPPPPP/RNBQKB1R w KQkq -
236 rnbqkbnr/pppp1ppp/8/4p3/8/7N/PPPPPPPP/RNBQKB1R w KQkq -
235 rnbqkbnr/ppp1pppp/3p4/8/8/2P5/PP1PPPPP/RNBQKBNR w KQkq -
235 r1bqkbnr/pppppppp/n7/8/4P3/8/PPPP1PPP/RNBQKBNR w KQkq -
235 r1bqkbnr/pppppppp/n7/8/8/4P3/PPPP1PPP/RNBQKBNR w KQkq -
235 rnbqkb1r/pppppppp/7n/8/4P3/8/PPPP1PPP/RNBQKBNR w KQkq -
235 rnbqkb1r/pppppppp/7n/8/8/4P3/PPPP1PPP/RNBQKBNR w KQkq -
232 rnbqkbnr/ppppp1pp/8/5p2/4P3/8/PPPP1PPP/RNBQKBNR w KQkq -
232 rnbqkbnr/ppppp1pp/8/5p2/8/4P3/PPPP1PPP/RNBQKBNR w KQkq -
232 rnbqkbnr/ppppppp1/8/7p/4P3/8/PPPP1PPP/RNBQKBNR w KQkq -
232 rnbqkbnr/ppppppp1/8/7p/8/4P3/PPPP1PPP/RNBQKBNR w KQkq -
231 rnbqkbnr/pppp1ppp/8/4p3/8/N7/PPPPPPPP/R1BQKBNR w KQkq -
231 rnbqkbnr/pppp1ppp/4p3/8/8/N7/PPPPPPPP/R1BQKBNR w KQkq -
229 rnbqkbnr/pppp1ppp/8/4p3/7P/8/PPPPPPP1/RNBQKBNR w KQkq -
229 rnbqkbnr/pppp1ppp/8/4p3/5P2/8/PPPPP1PP/RNBQKBNR w KQkq -
229 rnbqkbnr/pppp1ppp/4p3/8/7P/8/PPPPPPP1/RNBQKBNR w KQkq -
229 rnbqkbnr/pppp1ppp/4p3/8/5P2/8/PPPPP1PP/RNBQKBNR w KQkq -
225 rnbqkbnr/pp1ppppp/2p5/8/8/3P4/PPP1PPPP/RNBQKBNR w KQkq -

The entire mssql database is about 780 MB, but if anyone wants it send me an email and we'll figure something out.
I don't have the capacity to compute stats for perft 7, at least not with this method.
User avatar
sje
Posts: 4675
Joined: Mon Mar 13, 2006 7:43 pm

Re: Partial results posted

Post by sje »

SuneF wrote:I was bored one evening when I saw this thread.
I decided to do some stats on perft 3 to perft 6.

Code: Select all

Perft depth, unique positions, average mult, highest mult
3,    5362,  1.6602014173816,   4
4,   72064,  2.7375804840142,  16
5,  821845,  5.9203487275581,  87
6, 9393870, 12.6742571485447, 479
To compute perft 13 it could be distributed into 72064 unique perft 9 jobs at perft 4. One big problem though is that 64 bit keys would not be enough so I couldn't trust my own program without rewriting. Another big problem is that distributing the job will be relatively inefficient from a hashing perspective.
Your unique/distinct position counts are incorrect. I got some of these wrong myself when I first tried it.

See: http://oeis.org/A083276
SuneF
Posts: 127
Joined: Thu Sep 17, 2009 11:19 am

Re: Partial results posted

Post by SuneF »

sje wrote: Your unique/distinct position counts are incorrect. I got some of these wrong myself when I first tried it.

See: http://oeis.org/A083276
Ah okay, I guess my Fen output method doesn't care about en passent captures. Minor bug :)

Edit:
Hmm no thats not it, just checked. It definitely produces ep squares in the fen.
What else could it be?
SuneF
Posts: 127
Joined: Thu Sep 17, 2009 11:19 am

Re: Partial results posted

Post by SuneF »

sje wrote: Your unique/distinct position counts are incorrect. I got some of these wrong myself when I first tried it.

See: http://oeis.org/A083276
If you play e2e4 and no pawn can capture, do you consider that position to be the same as a position where a pawn can capture? If so this could explain it but the subtrees won't be the same so this would be wrong.

Anyway looks like both ep and castles rights are written correctly to the fen.
Strange.