[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [gnugo-devel] Critical dragons and cache problem

From: Evan Berggren Daniel
Subject: Re: [gnugo-devel] Critical dragons and cache problem
Date: Fri, 25 Jul 2003 10:15:00 -0400 (EDT)

On Fri, 25 Jul 2003, [ISO-8859-1] St?phane Nicolet wrote:

> This is probably a cache problem : as I anderstand it, the last move
> (Black C13) is probably not in the active area used for the owl-reading
> of C16 and C17 when they were put dead in the cache.
> But I really think we should do something about critical situations
> like that, because it means we can fine-tune the regression at will
> and still see gnugo play blunders in similar situations in real games.
> If this is indeed a cache issue, I can see two ways to solve it :
>     1) extend the active area, maybe including second-order liberties
>        of stones used to kill a group.
>     2) add a rule in examine_position() which says that any dead
>        opponent worm adjacent to an own owl-critical dragon should be
>        tested owl-critical with the cache, whatever the cache thinks.
>     3) any better idea ?
> I don't know how to do (1) at the moment nor if it is a good idea.
> If nobody objects, I would like to implement (2) and see how it works.

I think step 1 is to begin collecting regression test cases for the
problem.  Since you have a few, perhaps you could start :)  If you're not
interested, I can do it.

The way to do this would be to create a new file cache.tst.  You then need
to create the tests so as to set up the incorrect cache.  To do this, load
to the position a move before you wish to test, run the commands
owl_attack and owl_defend on the relevant dragon to get the old data in
the cache, then load to the position you wish to test and proceed as
normal.  I haven't tested this, but it should work.

Step two is to either find a way to detect such problems like you
suggested, or do a better job finding the active area.  We have always
assumed that being somewhat conservative with the active area was a
reasonable speed / strength tradeoff, but that might not be so.  I don't
think any careful analysis has ever been done.

If you want to go searching for more of these problems, I think the
easiest way is to replay games with the cache disabled.  I think the
easiest way to do this is to set the persistent cache sizes to 0 in the
source and recompile.  When replaying recent nngs games, you can reduce
the amount of noise by using the same random seed; they were played with
the random seed as the date in the filename, not including the year.  eg,
wildcat-gnugo-3.3.23-200307171625.sgf should have been played with seed

Hope this helps

Evan Daniel

reply via email to

[Prev in Thread] Current Thread [Next in Thread]