It is getting one anyhow. :)
gperft is a reasonably fast multithreaded perft program. There
are binaries for 64 bit linux and windows, with and without POPCNT.
The linux build is about 10% faster than the windows. Both
POPCNT-free builds are much slower, 25-30% slower than the linux
executable.
gperft is a pretty conventional program with hash tables -- this
is NOT the program using unique positions that I used for perft(13).
gperft can do a single-threaded perft without hash tables:
Code: Select all
gperft 1.0 (linux)
Using simple perft function (one thread, no hash tables).
Depth is 8.
rnbqkbnr
pppppppp
--------
-------- w KQkq -
--------
--------
PPPPPPPP
RNBQKBNR
Na3 3,193,522,577
Nc3 3,926,684,340
Nf3 3,937,354,096
Nh3 3,221,278,282
a3 2,863,411,653
b3 3,579,299,617
c3 3,806,229,124
d3 6,093,248,619
e3 8,039,390,919
f3 2,728,615,868
g3 3,641,432,923
h3 2,860,408,680
a4 3,676,309,619
b4 3,569,067,629
c4 4,199,667,616
d4 7,184,581,950
e4 8,102,108,221
f4 3,199,039,406
g4 3,466,204,702
h4 3,711,123,115
TOTAL 84,998,978,956
239.664 seconds
Code: Select all
gperft 1.0 (linux)
Low hash table ready (4096 MB, 2-3 ply).
High hash table ready (2048 MB, 4-8 ply).
Using 6 threads (split after 3 ply).
Depth is 11.
rnbqkbnr
pppppppp
--------
-------- w KQkq -
--------
--------
PPPPPPPP
RNBQKBNR
Na3 70,080,800,068,168
Nc3 91,451,554,526,572
Nf3 89,933,046,388,964
Nh3 71,046,267,678,634
a3 60,403,292,887,824
b3 79,510,326,025,357
c3 92,235,553,734,553
d3 151,857,971,385,067
e3 241,074,613,621,302
f3 51,614,296,095,395
g3 82,762,826,570,051
h3 60,097,879,424,719
a4 85,054,341,127,064
b4 80,419,308,561,211
c4 103,605,670,223,681
d4 211,583,204,457,112
f4 68,372,448,303,691
e4 245,841,494,675,197
g4 73,966,186,324,024
h4 86,739,921,618,220
TOTAL 2,097,651,003,696,806
8520.216 seconds
intel cpu and/or a lot of memory could run a few tests, I'd love to
see the numbers.
I imagine perft(12) could be done in 2 or 3 days. And perhaps 2 or 3
months for perft(13) (if one has a good power company, as there is no
way to save/restore). Using this program to verify perft(14) does not
seem very likely.
The source is not available (yet!) -- it needs considerable cleanup
before I'd let anyone else see it. How many chess programs require
one to "#define CHESS" in order to get it to function? :)
https://www.dropbox.com/s/dtqdlhaeba3ts ... _linux.zip
https://www.dropbox.com/s/yynchzovz79tb ... indows.zip
-paul