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

Re: computer-go: unmake move?



Yes,  my evaluation  is very  simple, almost  all of it  is calculated
before the search begins.   I do have a  specific move ordering I  use
but it  doesn't involve a full   blown sort.  The  program does little
serious work (and it probably shows  because it doesn't play very well
either!)

I  think this is   a  good argument  in favor  of  copying  state.  My
program, because  it does  very little, should   show state copying at
it's very worst  if it's  in fact a    bad idea.  If  I added  serious
evaluation then we could well imagine  that execution time would cease
to be dominated by making moves and copying state.  As you said, "With
very slow evaluations, unmake time is not an issue."  

So I think it probably  doesn't hurt me to avoid  unmake and just copy
the state  as I do.  And  I really enjoy the  virtue of  not having to
deal with the nitty gritty details of un-making.

Now, if only I knew how to write a strong go program ...  :-)

Don



   X-Sender: fotland@xxxxxxxxxxxxxxxxx
   X-Mailer: QUALCOMM Windows Eudora Light Version 3.0.5 (32)
   Date: Thu, 08 Jun 2000 08:03:28 -0700
   From: David Fotland <fotland@xxxxxxxxxxxxxxxxx>
   References: <3.0.5.32.20000607205243.015ecaf0@xxxxxxxxxxxxxxxxx>
   Mime-Version: 1.0
   Sender: owner-computer-go@xxxxxxxxxxxxxxxxx
   Precedence: bulk
   Reply-To: computer-go@xxxxxxxxxxxxxxxxx
   Content-Type: text/plain; charset="us-ascii"
   Content-Length: 1308


   You are running on a computer with a cache :)  Your state
   copies are in the cache, so they don't go to memory, so memory
   bandwidth is not a problem :)

   300K nps is very good.  You must have a very simple evaluation
   function, and a very fast move sorter. 

   Most of the strong go programs get less than 100 nps, since the
   evaluation is so slow and complex.  With very slow evaluations,
   unmake time is not an issue.

   Many Face's tactical analyzer gets about 50,000 nps on a fast PC.
   Its time is dominated by move selection and sorting.  Evaluation
   for string tactics is trivial (just count liberties).

   David

   At 02:14 AM 6/8/00 -0400, Don Dailey wrote:
   >
   >> Usually you are unmaking moves near the leafs, so the
   >> old position is still in the cache.  So memory bandwidth
   >> is not a problem.  Even if there is no cache, so copies
   >> go to memory, Pentium PCs should be able to copy over 100 MB/s.
   >> If the state is 1000 bytes, that limits performance to 100,000
   >> positions per second.
   >
   >But how can that be?  I know I am getting about 300,000 per second and
   >my state size is almost 5000 bytes!   I'm not cheating either, I don't
   >count a node unless I do a state copy.
   >
   >I will go over the code to see if there  is some error counting nodes,
   >but I am pretty sure I'm doing this correctly.
   >
   >Don
   >
   >