Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Rough comparison between rotated bitboards and 0x88

Author: Bas Hamstra

Date: 02:00:01 06/20/00

Go up one level in this thread


On June 19, 2000 at 19:03:34, James Robertson wrote:

>Abstract: For the last several days, I have been frantically trying to prove
>that my beloved rotated bitboards I spent two years on are as fast as the 0x88
>code I threw together in about an hour.
>
>Conclusion: life is not fair.
>
>Materials & Methods: I managed to speed up my bitboard move generation by 50%
>and bring it almost to the speed 0x88 move generation provides. In most
>positions my rotated bitboards are less than 10-20% slower than the 0x88 code. I
>could live with that, as potential speedups in well written code elsewhere and
>the hope of 64-bit processors that all us bitboard guys look forward to would be
>sufficient compensation. However, the story seems to get worse. Not
>surprisingly, making/unmaking moves is hopelessly slower than in 0x88 (only
>divine replanning of the universe will change that), but even functions such as
>check detection become slower than 0x88 as the pieces come off.
>
>Rotated bitboards do have several saving graces, not the least of which is
>capture generation. For instance, in the position 4k3/8/8/8/8/8/8/RNBQKBNR - -
>rotated bitboards are almost 500% faster! Even in less extreme positions, they
>still hold a healthy edge. Certain aspects of a scoring function are also
>greatly increased in speed. Mobility scoring can be much faster, but when it
>reaches the complexity of what I am writing for Insomniac 0x88 may catch up or
>even surpass the capability of rotated bitboards.
>
>My actual conclusions are... I don't really know. I will have to rewrite
>Insomniac from the ground up, as the new and improved bitboard code I wrote for
>the "speed race" will be almost impossible to move into the old version. So....
>I have a choice now between 0x88 and rotated bitboards, and am hoping maybe some
>of you could give me advice. Is there anyone else who has worked extensively
>with both systems? Anyone who has done more quantitative comparisons? On the
>side of 0x88 seems to be speed and simple code, but I am emotionally attached to
>rotated bitboards and the hope of increased speed on 64-bit processors is
>tantalizing.
>
>Thanks for any help.
>James

That's the reason I started timing various critical core routines. Like
Make/Unmake, GenCaptures, SquareAttacked and SEE.

If you would only do material, GenCaptures and Make/Unmake are most critical.
Now GenCaptures is fastest on 0x88 while Make is fastest on 0x88. SquareAttacked
is faster in BB. Difficult to say what system is faster on the whole.

It seems to be the most common opinion that 0x88 is faster. However so far this
is not my experience. In my case the problem was the Make in my BB version. My
first version did 700 Makes/Unmake pairs sec. About as much time as it takes to
do an average GenCaptures. Then I redesigned a lot of BB stuff carefully and
ended up 2M makes per second. If you can get your make fast enough, BB becomes
very competitive.

Some figures for my Celeron 466:

Make/Unmake:           2M / sec
GenCaps                1.2M / sec
SquareAttacked         5M /sec
AttacksTo              5M /sec

Especially in more "open" positions BB is *much* faster in generating captures,
which is important.

So according to my experience BB looks to be somewhat faster. On the other hand
I have the impression that of all programs with obscene high NPS figures, there
are zero BB's.


Regards,
Bas Hamstra.




















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.