Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: 0x88 is not so smart

Author: Christophe Theron

Date: 13:17:25 06/14/00

Go up one level in this thread


On June 14, 2000 at 15:01:32, Dann Corbit wrote:

>On June 14, 2000 at 06:56:27, Christophe Theron wrote:
>>On June 14, 2000 at 05:32:16, Alessandro Damiani wrote:
>>>On June 13, 2000 at 23:18:54, Christophe Theron wrote:
>>>>On June 13, 2000 at 16:53:39, Eugene Nalimov wrote:
>>>>>Combine two approaches -- 0x88 and 10x12. Use 12x16 board, and access board by
>>>>>    board[0x20+square]
>>>>>(In C/C++ you can define macro for that).
>>>>>
>>>>>Than in each case you can use more appropriate of 2 methods.
>>>>
>>>>
>>>>Well actually Eugene it is what I do already. Sorry, I should have stated this
>>>>more clearly in my post. I don't use 12x12 or 10x12. I use 16x16 (actually I
>>>>just need 16x12).
>>>>
>>>>I don't even need to add 0x20... That's why I think 16x12 is more efficient than
>>>>0x88, and this comes from close examination of what a typical chess program does
>>>>most of the time.
>>>>
>>>>
>>>>    Christophe
>>>
>>>The next step are bitboards.
>>>
>>>Alessandro
>>
>>
>>How many of the top programs actually use bitboards?
>
>My guess is that of those programs which are for sale, none of them do.
>The reason I guess this, is that the programs have been under development for a
>long time.  They probably started out with one of the representations before
>bitboards.  To change over to bitboards would require some tangible benefit.
>Since for 32 bit processors, the change is negligible, I strongly suspect that
>none of the professional programs have done this.
>
>However, once the 64 bit processors become mainstream, I expect all of them to
>make the transition at some point.


Don't be so sure. For example in my program I see no part that could be improved
with bitboards. I just don't need them.

I really think that bitboards have no intrinsic objective advantage. That's just
another way of representing things.

It is elegant and COULD be used to simplify complex operations, but the key
point is that in a chess program these complex operations are simply not
required...

You can give me whatever example of an operation elegantly handled with
bitboards, but if your example is realistic and is really used in a chess
program I'm sure I can do the same thing with my data representation with no
additional cost.

I have heard examples of ways of evaluating passed pawns that were alledgedly
faster with bitboards, but I do these evaluations in my program without
bitboards, and without pain...

If you manage to find an occurence where bitboards are really useful and faster,
I'm pretty sure it will represent less than 1% of CPU usage in a real chess
program.

It ends up being noise, because a 1% speedup, or even 10%, can be achieved by
other ways. For example optimizing for the cache architecture of your target
processor. The intrinsic speed provided by the basic data design (bitboards or
not) becomes hidden by other very platform specific designs.

The availability of 64 bits processors changes nothing. Unless some 64 bits
processors are so lousy that 8, 16 and 32 bits operations become slower than 64
bits ops...! :)

I don't mean this to be a critic of the bitboard design. Bitboards are really
very elegant, and certainly very interesting to program. But I see no objective
reason to chose them because they are more effective. They are not. They are
approximately as effective as 0x88 or other arrays based designs.


    Christophe



This page took 0.01 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.