Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: CT benchmarks: bitboard vs. non bitboard

Author: Anthony Cozzie

Date: 10:20:29 08/31/03

Go up one level in this thread


On August 31, 2003 at 11:50:53, Steven Edwards wrote:

>On August 31, 2003 at 10:20:36, Anthony Cozzie wrote:
>>On August 31, 2003 at 02:21:03, Steven Edwards wrote:
>
>>>The portable C++ CT toolkit has classes for describing positions either with or
>>>without bitboard representation in use.  Here are the results of running both of
>>>them for enumerating the 119,060,324 movepaths of length six from the initial
>>>position on a 800 MHz G4 PPC notebook:
>>>
>>>Non bitboard:
>>>
>>>Frequency 1.07069 MHz
>>>Period 933.98 ns
>>>Cycles per node 747.184
>>>
>>>Bitboard:
>>>
>>>Frequency 342.689 KHz
>>>Period 2.9181 us
>>>Cycles per node 2334.48
>
>>This is why abstracting the very base datastructures is a bad idea.  Your
>>program is searching 340knps with no eval function, no pruning, no transposition
>>table lookup, etc.  If someone writes an engine based on your bitboard code it
>>will probably search 100knps even with just a beancounter eval.  Abstraction
>>always costs you in speed; in a chess program you just can't afford a 2x speed
>>decrease with no gain (other than being able to easily modify your code)
>
>Look again at the numbers.
>
>Machine cycles per node 2334.48 -- on a 3.0 GHz machine, this would be 1.285
>MHz.
>
>The node count is based on legal moves only; no pseudolegal bad moves are
>included to inflate the numbers.
>
>The material balance is fully propagated to each node as are the hash keys.  A
>"beancounter" evaluation would take only a few more cycles per node.

I didn't see that you were running on a laptop :)

Note that IPC of processors is different: if your code ran on a 3.0G PIV it
would probably run at .0001 Mhz :) No one gets good IPC on the PIV.

Anyway, if we assume that cycles would be the same on an Athlon, your code would
take 1.2E8*2334*(1.4E9)^-1 = (1.2*2.334/1.4)E2 = ~200 seconds [600Khz].  Zappa
does the same computation in 60 seconds [2Mhz] (and yes, that includes material
counters, transposition key, pawn hash key, 50 move counter, etc).  So, your
code isn't as slow as I thought, but its still not exactly fast.  For someone
who just wants to mess around, its great.  For someone who wants to write a
competitive chess engine, its just not fast enough.

Abstraction is a great thing, but I just don't think it belongs here.  Speed is
too critical.

anthony

P.S. is your G4 mac 64 bit? I don't really follow mac hardware.



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.