Computer Chess Club Archives




Subject: Re: significant math

Author: Sune Fischer

Date: 03:24:41 11/22/02

Go up one level in this thread

On November 22, 2002 at 00:00:13, Vincent Diepeveen wrote:

>>There are two ways of arguing this I think. Either you go into some minute
>>detail and say - 0x88 have advantage/disadvantage here or whatever.
>>That leads nowhere, because of the counter argument: it is all about getting the
>>best out of your data structure, everything has some weaknesses and some
>I do not agree here with the assumption. Your assumption is that
>knowledge A is a bit faster with bitboards so should be used with
>bitboards and knowledge B is way faster with non-bitboards (0x88 is
>not my favourite for C by the way, pregenerated tables are doing
>fine in C).

The most natural assumption would be to go for a hybrid, usually these
algorithms work best.
But since the discussion is about pure bitboard vs non-bitboards, I was simply
saying that bitboards do have some advantages.

>My assumption is that i want A+B and some more and the increasing
>knowledge in all commercial and also amateur chessprograms (i hate
>making that distinction by the way, only the effort put in an engine
>counts IMHO, not whether you are by accident commercial or not)
>definitely gives a good thought on that that is exactly what happens.
>Now i want both A+B and then it is not so difficult to define what
>is faster on 32 bits machines.
>The question now is whether a pure bitboard program is going to do
>A+B faster at bitboards, not whether it's just doing A fast.
>To give concrete logics here: at 64 bits machines a 64 bits
>pawnboard is superb compared to my 32 bits vector boards i use
>for pawnstructure now. Not for everything, but for a lot of
>patterns i can save out 1 instruction.
>However doing things in 64 bits at a 32 bits processor is more
>than 1 instruction more, so i'll be not doing any effort to implement
>that yet. Such a change is done in 1 week of work anyway, so
>it is not really relevant anyway.

The idea is to do things in "micro parallel".
64 squares each represented by 1 bit, now the rest is up to your imagination.

Ie, you want to check that a white bishop is attacking the promoting square of a
black pawn, no raytracing needed here, just:

BishopAttacks(SqOfPromotion)&WhiteBishops ?  return true : return false;

Now show me how to do this faster with your method, no incremental attacktable
crap here, on the fly please, let me see your loops :)

>In case of a 64 bits machine i obviously will add such a bitboard
>to my datastructure.
>If i understand well, Quest which is a complete non-bitboarder IMHO,
>is already using a pawnboard in MMX registers.
>That doesn't make it a bitboarder at all IMHO. that's just a very
>small part of Quest.

I don't think speculation on what is used in Quest isn't going to take us very
far. I would prefer to talk about Tiger then, since Christophe has revealed a
few details.

>Now let's adress move generation and attacktables and normal
>patterns. No way to do that at a 64 bits machine in bitboards
>at the same speed. Not even close!

Nice mantra, repeating it a 100 times will probably make it true ;)

>So my choice is not a very difficult one. It's pregenerated tables.
>I could have gone for 0x88 too. There is no real big difference
>between pregenerated tables and 0x88. In C i just prefer the
>so called 'pregenerated'.

Well it is your choice, I respect it. I'm not going to pretend I know which it

However, I find it peculiar that you are so preoccupied with the move generation
speed of bitboards, when you yourself use incremental attack tables, which is
know to be "hell slower" than just about anything else.


This page took 0.01 seconds to execute

Last modified: Thu, 07 Jul 11 08:48:38 -0700

Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.