Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Resources about rotated bitboards

Author: Gerd Isenberg

Date: 12:19:49 01/16/04

Go up one level in this thread


On January 16, 2004 at 14:26:32, Alessandro Damiani wrote:

>
>>i was asking because i'm generating all attacks in all positions (also the leaf
>>nodes), which takes a significant amount of time. i thought my
>>looping-over-bitboards was terribly slow, then i replaced it by the kogge-stone
>>stuff that was posted here a while ago, and it got even slower ;-)
>>so the next thing to try would be rotated bitboards, but it's rather a lot of
>>work to implement, i'm afraid.
>
>When I started working on my engine years back I first implemented the Chess 4.0
>style attack tables. Then I read about Bob's Rotated Bitboards. I liked the
>idea, but found keeping updated rotated representations of the board too
>complicated. I therefore developed my own way of determining the attacked
>squares. I call it Rotated Indices. As its name suggests it keeps updated the
>indices used to access the attack tables. In contrast to Rotated Bitboards you
>don't have to extract the index out of the rotated bitboards, it is already
>there. The code is very simple.
>
>If you really want to implement Rotated Bitboards then you have to do it,
>waiting doesn't help. ;-) But, if you don't want to spend more than two hours
>for the implementation then you may have a look at Rotated Indices. You can find
>the source code on my homepage under "Chess programming: Bitboards in Fortress":
>http://freeweb.econophone.ch/fortress
>
>Alessandro
>        ....eine Einbuchtung im Raum


Ahh, you incremental update occupied states for each ray - really nice
improvement.

What's about the occupied redundancy of the most outer squares of a ray?
With two additional instructions, your 2nd level cache may happily wind a bit:

inside your attack-getter-macros:
  ...[sq][(SlideIndexX[...] >> 1) & 63]

// 128K instead of 512K
BitBoard       AFRhorizontal[64][64],
               AFRvertical[64][64],
               AFBrightup[64][64],
               AFBrightdown[64][64];

You may even better consider that property in incremental update and keep
SlideIndexX in 0..63 range rather than 0..255.

Gerd



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.