Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Length of time for Move_Gen()?

Author: Sune Fischer

Date: 14:19:53 02/15/04

Go up one level in this thread


On February 15, 2004 at 16:26:38, Russell Reagan wrote:

>On February 15, 2004 at 16:01:27, Sune Fischer wrote:
>
>>>Crafty: 21,231,421 moves/second
>>>Yace:   45,347,583 moves/second
>>
>>Are you sure that this is really the make/umake speed in yace, that it isn't
>>using some perft tricks like Movei?
>
>Note that in Crafty I did perf, not perft. These numbers should be just
>generating moves only, not make/unmake. That's my understanding anyway, unless
>Bob or Deiter wants to correct me on that.

I will assume this is a dumb and dirty generation of moves in random order (at
least for Yace, Crafty has inherent sorting), but do you know on what position?

>Anyway, here is what I get from the
>'speed' command in Yace.
>
>white ( 1): speed
>    eval:  785525.4 calls/s,   1.273 us/call
>   ataks: 1647361.6 calls/s,   0.607 us/call
> incheck: 25344683.8 calls/s,   0.039 us/call
>inck_lm0: 12664189.2 calls/s,   0.079 us/call
>inck_lm1: 13255042.2 calls/s,   0.075 us/call
>inck_hm0: 25658372.7 calls/s,   0.039 us/call
>inck_hm1: 25354787.3 calls/s,   0.039 us/call
>inck_hm0: 25683954.3 calls/s,   0.039 us/call
>inck_hm1: 25343322.7 calls/s,   0.039 us/call
>movelist: 2281586.2 calls/s,   0.438 us/call, 45631724.7 mv/s,   0.022 us/mv 20
> Mum(nc):  828387.1 calls/s,   1.207 us/call, 16567742.1 mv/s,   0.060 us/mv 20
> caplist: 3157859.7 calls/s,   0.317 us/call
>  Mum(c): 219756518.7 calls/s,   0.005 us/call
>
>I'm not 100% sure what all of this means, but I can make some guesses that make
>sense. I got my number from the 'movelist' line (45631724.7 mv/s). I assume
>'Mum' means 'Make, UnMake', so I also assume 'movelist' doesn't do any
>make/unmake.

I think you are right, so it is a tiny loop processing the same branch
conditionals over and over and benefitting a lot on cache hits.

Still I guess all programs get this advantage in that test.

>The Mum numbers are approximately what you get from running perft
>in Yace. AFAIK, the public version of Yace doesn't use hash tables for perft.

You can speed perft up by other means than hashing, ie. like Movei does by not
make/unmaking at the last ply.
You just need to know if the move is legal or not and this is often faster to
check for than a make/unmake.

>My
>best guess for what the (nc) and (c) means after Mum is 'no captures' and
>'captures', I guess.

Hmm.
I wonder why there are 200 times as many calls to Mum(c) then, seems
non-captures should be the far majority for most positions.

-S.



This page took 0 seconds to execute

Last modified: Thu, 15 Apr 21 08:11:13 -0700

Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.