Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: 64 bits

Author: Robert Hyatt

Date: 18:31:07 06/21/02

Go up one level in this thread


On June 21, 2002 at 17:19:26, Keith Evans wrote:

>On June 21, 2002 at 16:51:20, Robert Hyatt wrote:
>
>>On June 20, 2002 at 14:32:43, Keith Evans wrote:
>>
>>>On June 20, 2002 at 13:30:28, Eugene Nalimov wrote:
>>>
>>>>Such the experiment will answer the question: "On the 64-bit architecture, how
>>>>much speedup is caused by the 64-bittness"? I.e. let's imagine 32-bit Alpha or
>>>>Itanium2. How slower Crafty will be on such the animal?
>>>>
>>>>I suspect that the difference will be only ~10%. I.e. Alpha and Itanium2 run
>>>>Crafty well not because it uses 64-bit data structures, but because they run
>>>>everything well.
>>>>
>>>>Unfortunately, suggested experiment is flawed. Lot of compilers will generate
>>>>much worse code for the operations with structures than for the operations with
>>>>the builtin types.
>>>>
>>>>Eugene
>>>>
>>>
>>>But if the 32-bit datastructures perform _better_ than Bob predicts, despite the
>>>"much worse code", then the experimental results could still be useful. I agree
>>>that if the performance of the 32-bit datastructures is significantly lower
>>>(matching Bob's prediction) then we won't be able to say whether it's due to the
>>>compiler or just the 32-bit widths.
>>>
>>>Of course this may not motivate Bob to perform the experiment, because it can
>>>only show that his 64-bit bitboard performance claims are a bit exagerrated. If
>>>it's in the other direction then the argument will continue.
>>>
>>>We can only hope that a scientifically minded new chess engine author who is
>>>considering the use of bitboards will do some experimentation on these new
>>>processors and share the results.
>>>
>>>-Keith
>>
>>
>>Did you _ever_ consider that "some scientifically minded authors" might have
>>_already_ done this?  You did know that Cray Blitz was a non-bitmap program?
>>
>>You did know that the chess 4.x guys used a non-bitmap program in version
>>3.x?  That early duchess versions were traditional array-based while the
>>last duchess program was bitmap?
>>
>>IE a _bunch_ of us have played with this stuff and decided that 64 bit words
>>offers some unique things that make a lot of sense.  Speaking only for myself,
>>I didn't just "switch" for the sake of switching.  I studied bitmaps for _years_
>>prior to making the change.  I looked at key parts of the chess engine to see
>>if bitmaps made sense.  I concluded "yes".
>>
>>It was a lot of work to start over from scratch yet again.  However, to imply
>>that I did it without due consideration is a bit of a wild stretch.  I did it
>>after _considerable_ study and deliberation.  I ran tests on 32 and 64 bit
>>machines in the process.  It makes good sense.  I won't say the gain is 2x,
>>because not every instruction is fiddling with 64 bit values.  But the
>>gain is certainly considerable, just by eliminating the duplicate instructions
>>required on 32 bit machines...
>>
>>Anybody interested can try both approaches and make the choice themselves.  I've
>>not suggested that _anybody_ scrap what they have done.  I have repeatedly said
>>that bitmaps on a Intel 32 bit platform are "break even".  They give some
>>advantages (generating only captures, easily, is one).  The extra instructions
>>are bad, although the super-scalar intel machines tend to hide a lot of that
>>since the instructions can issue in parallel to different pipes.  On 64 bit
>>architectures, the 64 bit parts of the engine simply run faster, period.  That
>>represents a significant part of the work being done.  MakeMove() for example
>>is just about exclusively about updating 64 bit values and nothing else.
>>Ditto for UnmakeMove().  Those two functions, by themselves, are 15% of Crafty's
>>total cpu usage.  And they are nearly 100% 64 bit operations with a very few
>>branches thrown in.  64 bit architectures definitely help those pieces.  There
>>are others that are equally as complex and intensive on 64 bit operations.
>>
>>I didn't do it on a lark.  I did it after a _lot_ of consideration.
>
>Care to point me to a paper or any hard evidence showing the "considerable"
>gains? Or tell me how to demonstrate that for myself? I think that's all we're
>asking. Is the choice a matter of taste, or a matter of performance?

I didn't write anything when I ran the tests myself.  I was simply interested
in comparing things and I did so by writing quite a bit of code.  An 0x88
generator and a bitmap generator.  And comparing the speeds.

Slate/Atkin wrote the chapter in Chess Skill in Man and Machine.  It gives
quite a bit of insight into bitmaps and why they chose to change.

It is both a choice in taste and performance.  Using bitmaps takes some time
to get acclimated.  At first they seem a bit clumsy until you get used to
thinking in terms of masks and AND/OR type operations.  Then the clumsy
feeling goes away.  Performance is obvious in places.  GenerateCaptures() is
one easy one to understand.  How to generate captures for sliding pieces with-
out looping down the rays?  I don't see an alternative for an array.  For
bitmaps there is an easy one.




>
>I didn't see any huge objections to Eugene's assembly language snippet which
>seemed to put a bounds on the "matter of performance" camp.


It is all conjecture however.  The _right_ way would be to simply compile
crafty, optimized, and have the compiler dump the assembly.  Then we would
_really_ know what the code looks like.  Maybe a few small pieces could be
inspected like that...



>
>-Keith



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.