Author: Robert Hyatt
Date: 18:33:29 01/20/04
Go up one level in this thread
On January 20, 2004 at 19:48:45, Sune Fischer wrote:
>On January 20, 2004 at 13:05:02, Robert Hyatt wrote:
>
>>On January 20, 2004 at 12:55:58, Sune Fischer wrote:
>>
>>>On January 20, 2004 at 11:55:20, Robert Hyatt wrote:
>>>>
>>>>OK. Multiply the above by 100x and turn that into times. It takes how long
>>>>to copy a complete cache line from memory to cache and back? That is 32 words
>>>>which is longer than _most_ PVs. Do that 100 times you can't even measure it
>>>>over the rest of the search expense. :)
>>>
>>>You are not adressing the other issues, the termination stuff and the added
>>>code.
>>>It's not the copy-cost that mainly keeps me from doing it.
>>
>>I gave you _exactly_ the code from within Crafty. One store, two calls
>>to memcpy() (and one of those could be a store in fact). I don't have any
>>"termination stuff" at all in Crafty. When I start a new PV, I store the
>>ply for the last move. That's all I need.
>
>There must be some place where you set the length of the PV line, you increment
>by one when going back I understand that, but you must terminate somewhere.
>
> if (RepetitionCheck(tree,ply,wtm)) {
> value=DrawScore(wtm);
> if (value < beta) SavePV(tree,ply,value,0);
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
That is the code I supplied yesterday. I don't terminate anything. All I
do is store the highest ply in the PV. Then as I back up, I back up and add
a move in _front_ of that move, so the end never changes, and the closer I
get to the rook, the more moves there are added in, each in front of the
previous move.
> return(value);
> }
>
>That's the kind of stuff I don't have to deal with - *clutterings* ;)
>
>I'm only saying it because I remember I actually did have problems with it, I
>always got illegal moves at the end of the PV which indicated it wasn't
>terminated correctly.
You just add a pv.pathl integer. Where you call evaluate and decide that this
is a "stand pat" position, you store ply-1 into that pathl variable. You are
done with it, and since no moves go beyond this stand pat point, and no move
was played here, you back up an empty PV with ply-1 as the length. When you
get back to the previous ply, you add in the best move and back that up. pathl
never changes. It always tells exactly how many moves will be in the PV when
you finally get back to the root and are done with it.
>
>>>Doesn't that worry you then, that you have to do this at all?
>>
>>yes. But you miss the point. You don't do this. But you should. Because
>>I have found that without the "stuffing the PV" code, my search gets a bit
>>bigger. If I don't "stuff the PV" I am using the _same_ information you are
>>using, namely residual hash information, and I know that it is going to have a
>>bogus best move here and there for the reasons already given.
>
>I'm surprised if a few PV moves can cut down the tree my any significant amount,
>but then again I never understood why IID works.. :)
>
>-S.
Fail-highs, Daniel-san.
:)
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.