Computer Chess Club Archives




Subject: A Response From Marc Boule

Author: Slater Wold

Date: 10:22:53 04/02/02

Anyone who doesn't know, Marc Boule is a student of McGill University in
Montreal.  He is currently doing a Thesis on an FPGA based move generator for
his chess program, MBChess.  You can download MBChess, and read several
interesting documents from Marc at

MBChess is a very basic chess program.  (I actually beat it myself, me taking
about 2 minutes a move, and it getting 5 seconds per move.  Seems unfair, but I
cannot beat Fritz 7 at this handicapped time control.)  Marc has not profiled
MBChess, but he *guesses* that MBChess is approx. 50% eval and 50% move gen.
His exact words are:  "Unfortunately I haven't profiled MBChess. I thought that
move generation would account for approximately 50% of the time and that
positional evaluation would count for another 50% but I might be wrong." and
"The results are not that good. I must mention that I am no C expert and my
chess program is not that good. The positional evaluation function is really
ugly and pre-historic. Maybee since the pos. eval. is time consuming, the effect
of a faster move gen."

His results thus far, are as follows:

AMD-K62-450MHz 16MB hash, MBChess vs. MBChess+HW, during opening game:
A) with no heuristics, no positional eval., no quiescence, no hash, just
alpha-beta: hardware is 4.5 times faster (270 kNps vs 57 kNps)
B) with positional, hash and quiescence search: hardware is 2.3 times faster
(97 kNps vs 41 kNps)
C) with B)+Killer: hardware is 2 times faster (115 kNps vs 59 kNps)
These results are a bit disapointing. Even though the pure move generator
speed is almost 5 times faster, when using full heuristics, this drops to
about 2 times faster (hw accelerated vs. software only). During end-game,
the hardware seems to improve more (multiply above numbers by approx. 1.5).

The "2M to 10M" statement I made was a error on my part.  It stemed from a
previous conversation, and other things I was taking from his documentation.

So that puts me kind of back to square one.  Marc has found that his FPGA move
generator can, at best, make/uname 10M moves a second.  On my AMD 2x1.6Ghz with
Crafty, I can make/unmake 30M moves a second.  And Keith Evans (who has been an
exceptional help) has proven that due to PCI bus saturation, even 10M moves per
second will not transfer from FPGA --> Engine.  I still have not had the
oppurtunity to profile Crafty, but I would guess that at best I could not speed
it up more than 15%.

Therefore, the only way to truly speedup Crafty, would be to make an FPGA with a
search and an eval.  Which is a *much* harder task than a move generator.

I am going on vacation tomorrow for 2 weeks.  When I get back I will profile
Crafty, and then look into the possibility of porting the heaviest parts into HW
generated via FPGA's.  It is very possible that I will stick with making the
move generator first, and then move on to the harder parts.

Any ideas/thoughts/comments?  And does anyone want to profile Crafty for me
while my computer is broken.  :D

Thanks to *everyone* who gave feedback on this.  I still plan on doing this.  I
just need more help.  ;)


PS Keith, do you have another e-mail address?  Yahoo wouldn't accept e-mail from because it's an open relay.  :(

This page took 0.14 seconds to execute

Last modified: Thu, 07 Jul 11 08:48:38 -0700

Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.