Author: Robert Hyatt
Date: 18:34:11 06/20/00
Go up one level in this thread
On June 20, 2000 at 21:05:28, Christophe Theron wrote: >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 Same thing for bitboards. Takes at least a couple of years to get you to the point where they seem 'natural'.
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.