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.