Author: Christophe Theron
Date: 18:05:28 06/20/00
Go up one level in this thread
On June 20, 2000 at 15:02:29, James Robertson wrote:
>On June 20, 2000 at 14:55:51, Robert Hyatt wrote:
>
>>On June 20, 2000 at 14:34:37, James Robertson wrote:
>>
>>>On June 20, 2000 at 14:21:23, Christophe Theron wrote:
>>>
>>>>On June 20, 2000 at 11:17:48, Andrew Williams wrote:
>>>>
>>>>>On June 20, 2000 at 09:02:26, Robert Hyatt wrote:
>>>>>
>>>>>>On June 20, 2000 at 04:55:22, Dann Corbit wrote:
>>>>>>
>>>>>>>On June 20, 2000 at 04:41:47, James Robertson wrote:
>>>>>>>
>>>>>>>>Ignore all results from my previous post "Rough comparison between ro....". I
>>>>>>>>made some stupid coding errors in my test rotated bitboard code. Once fixed the
>>>>>>>>rotated bitboards look very competitive against 0x88. :) I also found flaws in
>>>>>>>>my 0x88 code, but they were very minor and I think I caught all of them (correct
>>>>>>>>move lists are generated in all my test positions).
>>>>>>>>
>>>>>>>>I am very happy to continue to use rotated bitboards. Thanks Robert for
>>>>>>>>inventing them, and thanks Tim for showing me how to use them!
>>>>>>>
>>>>>>>What was the timing ratio for various operations between the two methods?
>>>>>>>
>>>>>>>For the 0x88, what board size did you use?
>>>>>>
>>>>>>
>>>>>>For 0x88 you don't have much choice... it has to be 128, where you use the left
>>>>>>half for the board, the right half (64 squares) are off the board. There is
>>>>>>really a top half of 128 words also, but 0x88 eliminates references to them
>>>>>>due to the 0x80 bit not being allowed.
>>>>>
>>>>>Christophe Theron posted a few interesting pointers to using 16x16 instead of
>>>>>16x8 last week (I think).
>>>>>
>>>>>Andrew
>>>>
>>>>
>>>>Yes. I think that comparing 0x88 and bitboards is not totally relevant, as 0x88
>>>>is in my opinion suboptimal. I explained why in last week's posts.
>>>>
>>>>There are also many smart tricks you can use that are derived from the
>>>>properties of a 16x16 (or 16x12) board, and they have never been published.
>>>>
>>>>I don't believe it is possible to compare 0x88, 16x and bitboards in one day or
>>>>two. Once you start to use one system, you discover smart ways to optimize it
>>>>even months after you start using it.
>>>>
>>>>I think that 16x and bitboards just break even, even on 64 processors, but it
>>>>would probably be very difficult to demonstrate this...
>>>>
>>>>
>>>> Christophe
>>>
>>>I don't think we will ever know which is better, as there will probably never be
>>>someone who spends enough time at both to find every clever trick a system
>>>provides. I think I would stick with bitboards even if I knew their absolute max
>>>move generation speed to be 1/2 the 16x absolute max. First, 1/2 the speed in
>>>move generation is not that much when translated into a complete chess program,
>>>and second, I have so much more experience with bitboards that I would be able
>>>to bring them closer to some "absolute" potential than any other representation
>>>to its "absolute" potential.
>>>
>>>James
>>
>>
>>I have done both (+ others) for a long time. I used 0x88 in the 1970's and early
>>80's, but switched to a 10x12 board in the early 80's as it vectorized better
>>and fit the Cray architecture better. I stuck with that until 1995/1996 when I
>>started with bitboards.
>>
>>I don't know that any one approach is way better than the others on 32 bit
>>machines. But things do change on 64 bit machines, and on machines with
>>streaming vector hardware. IE I did things far differently on a cray because
>>I knew the architecture in great detail, and designed things to be done
>>efficiently. If you haven't studied a Cray and what it can do with vector
>>operations, it is an eye-opening experience to do so. Vectors aren't just for
>>adding, subtracting, etc. You can do mobility with different weights for
>>each square, etc. And you can do it _fast_.
>>
>>I have a pretty strong feeling that bitboards is better than other approaches
>>on 64 bit machines, primarily due to data density. A 64 bit int passes around
>>a lot of data with a bitboard, while for a program that doesn't need that much
>>data precision, it passes around a whole lot of zeroes... and you get nothing
>>for passing them around.
>
>This is encouraging. I was practically in despair last night thinking I would
>have to rewrite my program in 16x or 0x88 as the speed advantages were
>"overwhelming". I was VERY happy to discover that the tremendous speed
>difference was due to big mistakes on my part!
>
>James
Just realize that the power of 0x88 or 16x goes far beyond what you can discover
in such a little time...
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.