Author: Bas Hamstra
Date: 02:00:01 06/20/00
Go up one level in this thread
On June 19, 2000 at 19:03:34, James Robertson wrote: >Abstract: For the last several days, I have been frantically trying to prove >that my beloved rotated bitboards I spent two years on are as fast as the 0x88 >code I threw together in about an hour. > >Conclusion: life is not fair. > >Materials & Methods: I managed to speed up my bitboard move generation by 50% >and bring it almost to the speed 0x88 move generation provides. In most >positions my rotated bitboards are less than 10-20% slower than the 0x88 code. I >could live with that, as potential speedups in well written code elsewhere and >the hope of 64-bit processors that all us bitboard guys look forward to would be >sufficient compensation. However, the story seems to get worse. Not >surprisingly, making/unmaking moves is hopelessly slower than in 0x88 (only >divine replanning of the universe will change that), but even functions such as >check detection become slower than 0x88 as the pieces come off. > >Rotated bitboards do have several saving graces, not the least of which is >capture generation. For instance, in the position 4k3/8/8/8/8/8/8/RNBQKBNR - - >rotated bitboards are almost 500% faster! Even in less extreme positions, they >still hold a healthy edge. Certain aspects of a scoring function are also >greatly increased in speed. Mobility scoring can be much faster, but when it >reaches the complexity of what I am writing for Insomniac 0x88 may catch up or >even surpass the capability of rotated bitboards. > >My actual conclusions are... I don't really know. I will have to rewrite >Insomniac from the ground up, as the new and improved bitboard code I wrote for >the "speed race" will be almost impossible to move into the old version. So.... >I have a choice now between 0x88 and rotated bitboards, and am hoping maybe some >of you could give me advice. Is there anyone else who has worked extensively >with both systems? Anyone who has done more quantitative comparisons? On the >side of 0x88 seems to be speed and simple code, but I am emotionally attached to >rotated bitboards and the hope of increased speed on 64-bit processors is >tantalizing. > >Thanks for any help. >James That's the reason I started timing various critical core routines. Like Make/Unmake, GenCaptures, SquareAttacked and SEE. If you would only do material, GenCaptures and Make/Unmake are most critical. Now GenCaptures is fastest on 0x88 while Make is fastest on 0x88. SquareAttacked is faster in BB. Difficult to say what system is faster on the whole. It seems to be the most common opinion that 0x88 is faster. However so far this is not my experience. In my case the problem was the Make in my BB version. My first version did 700 Makes/Unmake pairs sec. About as much time as it takes to do an average GenCaptures. Then I redesigned a lot of BB stuff carefully and ended up 2M makes per second. If you can get your make fast enough, BB becomes very competitive. Some figures for my Celeron 466: Make/Unmake: 2M / sec GenCaps 1.2M / sec SquareAttacked 5M /sec AttacksTo 5M /sec Especially in more "open" positions BB is *much* faster in generating captures, which is important. So according to my experience BB looks to be somewhat faster. On the other hand I have the impression that of all programs with obscene high NPS figures, there are zero BB's. Regards, Bas Hamstra.
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.