Discussion of chess software programming and technical issues.
Moderators: hgm , Rebel , chrisw
kcc
Post
by kcc » Fri Oct 12, 2007 6:51 pm
Dear computer chess experts,
I am wondering, what is the best known speed of move generation (one thread, no transposition table, etc)?
E.g. simply measured by perft().
On my c2d@2.4GHz, crafty (I've downloaded the most recent 64-bit binary for linux) gives ~19M nodes per second.
Code: Select all
White(1): perft 6
total moves=119060324 time= 6.29
White(1): perft 7
total moves=3195901860 time=167.37
(can't measure for 8 plies, there seem to be an overflow)
With my own engine I get 24M nps on the same machine (the algorithm is similar to the
http://www.cis.uab.edu/hyatt/bitmaps.html , section 2)
Code: Select all
d=1 n=20 t=0 ratio=inf
d=2 n=400 t=0 ratio=inf
d=3 n=8902 t=0 ratio=inf
d=4 n=197281 t=0 ratio=inf
d=5 n=4865609 t=0.2 ratio=2.4328e+07
d=6 n=119060324 t=4.92 ratio=2.41993e+07
d=7 n=3195901860 t=131 ratio= 2.43962e+07
d=8 n=84998978956 t=3501.88 ratio=2.42724e+07
d=9 n=2439530234167 t=100312 ratio=2.43193e+07
But I am very curious if any engine is able to generate moves *significantly* faster.
Thanks,
--kcc
Vempele
Post
by Vempele » Fri Oct 12, 2007 7:31 pm
Reinhard Scharnagl wrote: Here is some result including statistics and also mating analysis by SMIRF (thus a little bit slow):
Code: Select all
FEN: r3k2r/p6p/8/8/8/8/P6P/R3K2R w - - 0 1
+-a--b--c--d--e--f--g--h-+ MS Vis.Studio C++ 32-Bit-Vers. 13.10
8 |[r]::: :::[k]::: [r]| (Compilation: May 19 2007)
7 |[p] ::: ::: :::[p]|
6 | ::: ::: ::: :::| Perft Testseries
5 |::: ::: ::: ::: |
4 | ::: ::: ::: :::| (without caching)
3 |::: ::: ::: ::: |
2 |<P>::: ::: ::: <P>| Smirf Test No.: 0
1 |<R> ::: <K> :::<R>|
=>+-a--b--c--d--e--f--g--h-+ Break Time: +20.00 Sec.
Ply Nodes all (x) (ep) all (+) (#) Prom. Cstl. Sec.
-------------------------------------------------------------------------------
1 14 0 0 0 0 0 0 0
2 192 0 0 4 0 0 0 0
3 3466 5 0 168 0 0 0 0
4 60120 311 0 3108 0 0 0 0
5 1223784 9773 0 82992 4 0 0 0.062
6 24161970 281348 2 1651267 97 0 0 1.484
7 528388659 7551900 54 40457103 9714 0 0 29.08
-------------------------------------------------------------------------------
FEN: r3k2r/p6p/8/8/8/8/P6P/R3K2R w - - 0 1
+-a--b--c--d--e--f--g--h-+ MS Vis.Studio C++ 32-Bit-Vers. 13.10
8 |[r]::: :::[k]::: [r]| (Compilation: May 19 2007)
7 |[p] ::: ::: :::[p]|
6 | ::: ::: ::: :::| Perft Testseries
5 |::: ::: ::: ::: | (with TT caching +256.0 MB / 4-fold)
4 | ::: ::: ::: :::| TT Access Success +71.0%
3 |::: ::: ::: ::: |
2 |<P>::: ::: ::: <P>| Smirf Test No.: 0
1 |<R> ::: <K> :::<R>|
=>+-a--b--c--d--e--f--g--h-+ Break Time: +10.00 Sec.
Ply Nodes all (x) (ep) all (+) (#) Prom. Cstl. Sec.
-------------------------------------------------------------------------------
1 14 0 0 0 0 0 0 0
2 192 0 0 4 0 0 0 0
3 3466 5 0 168 0 0 0 0
4 60120 311 0 3108 0 0 0 0
5 1223784 9773 0 82992 4 0 0 0.032
6 24161970 281348 2 1651267 97 0 0 0.313
7 528388659 7551900 54 40457103 9714 0 0 2.594
8 11297385161 198312821 2463 864164302 196741 0 0 18.33
-------------------------------------------------------------------------------
(AMD Athlon 64 X2 3800+ in single threaded 32 Bit mode)
Reinhard.
That'd be a little over 600 Mnps for perft 8. See
this topic.
Jacob
Post
by Jacob » Fri Oct 12, 2007 8:49 pm
Smirf's results are without a make/undo in the leaf nodes, right?
Alex Brunetti
Post
by Alex Brunetti » Fri Oct 12, 2007 9:11 pm
kcc wrote:
Code: Select all
[code]d=1 n=20 t=0 ratio=inf
d=2 n=400 t=0 ratio=inf
d=3 n=8902 t=0 ratio=inf
d=4 n=197281 t=0 ratio=inf
d=5 n=4865609 t=0.2 ratio=2.4328e+07
d=6 n=119060324 t=4.92 ratio=2.41993e+07
d=7 n=3195901860 t=131 ratio= 2.43962e+07
d=8 n=84998978956 t=3501.88 ratio=2.42724e+07
d=9 n=2439530234167 t=100312 ratio=2.43193e+07[/code]
[/quote]
I wonder how fast is mine on your CPU. Perft 6 is completed in 8.5 secs on my very slow PC, but Crafty's (20.14) in 36 seconds. May you test it? You can download 0.5.4a form my site.
[quote]
But I am very curious if any engine is able to generate moves *significantly* faster.
[/quote]
Delfi is faster than mine, but 5.2 seems to have not the perft command anymore. You should test 5.1 or even 5.0.
Alex
kcc
Post
by kcc » Fri Oct 12, 2007 11:20 pm
Vempele wrote:
That'd be a little over 600 Mnps for perft 8. See
this topic.
Emm, that does not count, as the caching was enabled.
For this position I have 20M nps:
Code: Select all
d: 1 n: 14 t: 0 nps: inf
d: 2 n: 192 t: 0 nps: inf
d: 3 n: 3466 t: 0 nps: inf
d: 4 n: 60120 t: 0 nps: inf
d: 5 n: 1223784 t: 0.06 nps: 2.03964e+07
d: 6 n: 24161970 t: 1.19 nps: 2.03042e+07
d: 7 n: 528388659 t: 25.65 nps: 2.05999e+07
SMIRF w/o caching has 18M nps (but the machine is different)
Code: Select all
7 528388659 7551900 54 40457103 9714 0 0 29.08
kcc
Post
by kcc » Fri Oct 12, 2007 11:24 pm
Alex Brunetti wrote:
I wonder how fast is mine on your CPU. Perft 6 is completed in 8.5 secs on my very slow PC, but Crafty's (20.14) in 36 seconds. May you test it? You can download 0.5.4a form my site.
That may not be apples-to-apples comparison.
Are you running crafty as 64-bit?
Do you have linux version of your engine?
hgm
Posts: 27808 Joined: Fri Mar 10, 2006 10:06 am
Location: Amsterdam
Full name: H G Muller
Post
by hgm » Fri Oct 12, 2007 11:44 pm
kcc wrote: On my c2d@2.4GHz, crafty (I've downloaded the most recent 64-bit binary for linux) gives ~19M nodes per second.
Code: Select all
White(1): perft 6
total moves=119060324 time= 6.29
White(1): perft 7
total moves=3195901860 time=167.37
(can't measure for 8 plies, there seem to be an overflow)
With my own engine I get 24M nps on the same machine
This does not seem very fast for a 2.4GHz C2D.
Qperft reaches about that speed on a 1GHz Athlon XP...
Code: Select all
$ perft 6
- - - - - - - - - - - -
- - - - - - - - - - - -
- - r n b q k b n r - -
- - p p p p p p p p - -
- - . . . . . . . . - -
- - . . . . . . . . - -
- - . . . . . . . . - -
- - . . . . . . . . - -
- - P P P P P P P P - -
- - R N B Q K B N R - -
- - - - - - - - - - - -
- - - - - - - - - - - -
Quick Perft by H.G. Muller
Perft mode: No hashing, bulk counting in horizon nodes
perft(1)=20 ( 0.000 sec)
perft(2)=400 ( 0.000 sec)
perft(3)=8902 ( 0.000 sec)
perft(4)=197281 ( 0.010 sec)
perft(5)=4865609 ( 0.210 sec)
perft(6)=119060324 ( 5.498 sec)
kcc
Post
by kcc » Sat Oct 13, 2007 12:09 am
hgm wrote:
perft(6)=119060324 ( 5.498 sec)
Impressive!
On my c2d I get this out of Qperft:
Code: Select all
perft(6)=119060324 ( 1.750 sec)
perft(7)=3195901860 (47.210 sec)
that is about 67M nps... I am stunned.
can someone do better?
Michael Sherwin
Posts: 3196 Joined: Fri May 26, 2006 3:00 am
Location: WY, USA
Full name: Michael Sherwin
Post
by Michael Sherwin » Sat Oct 13, 2007 12:22 am
kcc wrote: hgm wrote:
perft(6)=119060324 ( 5.498 sec)
Impressive!
On my c2d I get this out of Qperft:
Code: Select all
perft(6)=119060324 ( 1.750 sec)
perft(7)=3195901860 (47.210 sec)
that is about 67M nps... I am stunned.
can someone do better?
On an 80486 processor my code runs faster.
Harm's code is hard (next to impossible) to beat on modern processors.
If someone beats it, it would only be by a very small amount.
I may give it a try using my new vector-magnitude code that I have not implemented yet.
If you are on a sidewalk and the covid goes beep beep
Just step aside or you might have a bit of heat
Covid covid runs through the town all day
Can the people ever change their ways
Sherwin the covid's after you
Sherwin if it catches you you're through
Alex Brunetti
Post
by Alex Brunetti » Sat Oct 13, 2007 12:35 am
kcc wrote: That may not be apples-to-apples comparison.
Are you running crafty as 64-bit?
No, I just have a 32 bit processor. It may not be apples-to-apples if they run on a 64 bit machine, since my engine is designed for 32 bit
kcc wrote: Do you have linux version of your engine?
No, I'm sorry.
Alex