Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Measuring NPS...

Author: Uri Blass

Date: 08:34:14 11/18/02

Go up one level in this thread


On November 18, 2002 at 10:50:02, Robert Hyatt wrote:

>On November 18, 2002 at 09:25:37, Omid David Tabibi wrote:
>
>>On November 17, 2002 at 22:31:31, Robert Hyatt wrote:
>>
>>>On November 17, 2002 at 21:12:53, Joel wrote:
>>>
>>>>Hey All,
>>>>
>>>>Thankyou to everyone who responded to my query regarding 'extracting bits from a
>>>>bitboard'. I think I will use some preprocessor code and use the bsf/bsr method,
>>>>otherwise falling back on my old method (I can play around with this part
>>>>later).
>>>>
>>>>My next question that follows is how do you guys measure nodes per second. I can
>>>>think of a quite a few ways of doing it myself, but I would prefer implementing
>>>>it in a way which lets me very confidently compare my results with others.
>>>>
>>>>Thanks,
>>>>Joel
>>>
>>>
>>>Every time you recursively call Search() or Quiesce(), increment a counter
>>>by one.  That is counting nodes searched.  Divide that by time used and you
>>>get a useful NPS value.
>>
>>But when you reach depth == 0, don't increment the node counter, since this node
>>will be counted as a quiescence node upon calling quiesc(). (if you do, this
>>node will be counted twice!)
>
>
>Not in my code.  If I enter search, that is a node.  If I call quiesce, I call
>it _from_ search
>and _only_ after making a move.  There is no way in a normal alpha/beta search
>to enter
>search and from there go to quiesce() without making a move.  If you are doing
>that you
>are wasting time with an extra procedure call and its overhead...

My alphabeta algorithm is the following:

1)Calculate extensions or partial extensions(I have a special varaible for
partial extension and if it is big enough I reduce it and increase depth by 1).
2)if remaining depth=0 call qsearch
3)while no moves left do the following
a)makenextmove
b)calculate alphbeta with depth-1
c)if score>beta return beta
d)if score>alpha alpha=score
4)return alpha;

I understand that you do it in the following way:

1)while nomove left
a)makenextmove
b)calculate extensions
c)call alphabeta with depth-1 or qsearch in case that depth-1=0(you do not use
depth-1 and you have not a special varaible for partial extensions but these are
unimportant technical details)
d)if score<beta return beta
e)if score>alpha alpha=score

2)return alpha;

Do you say that the second way is faster because you call alphabeta less times?
How much speed improvement can a program get from it?

Uri



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.