Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: 0x88 is not so smart

Author: Christophe Theron

Date: 03:17:33 06/15/00

Go up one level in this thread


On June 14, 2000 at 18:42:33, Peter McKenzie wrote:

>On June 14, 2000 at 17:41:11, Alessandro Damiani wrote:
>
>>On June 14, 2000 at 16:17:25, Christophe Theron wrote:
>>
>>>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
>>
>>I do detection (not evaluation) of passed pawns incrementally. A few ANDs and
>>all passed pawns are in one bitboard. Since I evaluate all pawns without
>>scanning them (evaluation is also depending on attack information!), it is
>>faster than scanning all pawns and check if they are passed.
>
>You don't need a bitboard program to do this.  You can just store the passed
>pawn information (in bitboard form or some other form) in the pawn hash table.


You are absolutely right. Doing it with bitboards would give what? A 0.5%
speedup?


    Christophe



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.