Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Rough comparison between my brain and a wood post.

Author: James Robertson

Date: 12:02:29 06/20/00

Go up one level in this thread


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



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.