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.