Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Tinker 81 secs Re: Testing speed of "position visiting"

Author: Tom Kerrigan

Date: 07:22:01 04/24/00

Go up one level in this thread



On April 24, 2000 at 09:27:16, Robert Hyatt wrote:

>On April 24, 2000 at 00:12:06, Tom Kerrigan wrote:
>
>>On April 23, 2000 at 23:24:13, Robert Hyatt wrote:
>>
>>>BTW, this could probably run faster if I wanted.  I never intended the perft
>>
>>I'm sure mine could run faster if I wanted, too. My intent was not to test
>>manliness, it was to see if anyone is doing much better than I am.
>>
>>>generator is not screwing up' test...  A better test here is to pick a
>>>position and generate or generate/make/unmake moves over and over, without
>>>doing the recursive calls and so forth...  or the legality checks, etc...
>>
>>I disagree. If nothing else, this allows the entire benchmark can run out of L1
>>cache, regardless of what typical memory footprint is.
>>
>>>Here is output for Peter's position, generating the moves from the same position
>>>N times, then generating/making/unmaking the moves M times:
>>>
>>>White(1): perf
>>>generated 48000000 moves, time=7.57 seconds
>>>generated 6340818 moves per second
>>
>>Mine does this in 4.911 seconds = 9.77M mps.
>>
>>>generated/made/unmade 48000000 moves, time=38.66 seconds
>>>generated/made/unmade 1241593 moves per second
>>
>>Mine does this in 24.096 seconds = 1.99M mps.
>>
>>So now the question is, why is my program 10% slower than yours for the
>>recursive test when it's about 60% faster at the tests that you proposed? Hmmm.
>>
>>-Tom
>
>
>No clue.  You are obviously doing something in the recursive test I am not.
>Don't forget those times are 400mhz times (PII also, 66mhz FSB).  Perhaps there
>is a hardware difference as well.

My times are for a 400MHz Celeron, also 66MHz FSB. The cache difference
shouldn't matter because my program should be running out of L1 cache.

During the recursive test, I test the legality of every move. That slows down my
makemove() function by a lot (although it's still faster than Crafty's), but I
can't think of any other way to get accurate results. Other than that, I can't
imagine what we might be doing differently.

void recurse(int depth)
{
  int i;
  if (depth <= 0) {
    ++nodes;
    return;
  }
  --depth;
  gen(attack(piece[side][0].sq, xside));
  for (i = first_move[ply]; i < first_move[ply + 1]; ++i) {
    if (!do_move(move[i].m))
      continue;
    recurse(depth);
    undo_move();
  }
}

-Tom



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.