Author: Larry Griffiths
Date: 06:01:16 01/24/01
Go up one level in this thread
On January 24, 2001 at 03:40:29, Landon Rabern wrote: >On January 23, 2001 at 16:22:42, Larry Griffiths wrote: > >>On January 23, 2001 at 15:46:08, Dann Corbit wrote: >> >>>On January 23, 2001 at 14:41:28, Severi Salminen wrote: >>> >>>>>I created a GenerateCapturesMoves styled after your Crafty GenMove. >>>> >>>>What was your previous movegen like? I have not yet watched Crafty's movegen so >>>>what modifications did you make to improve your speed? I have also spent a lot >>>>time speeding my movegen up and now I'm sometimes faster that Crafty and >>>>sometimes not. >>>> >>>> >>>>>Looks like it is worth about 100,000 moves per second in my program. >>>>>I do not update hashkeys like your perft does. >>>>>I may be able to get a few more moves per second with some tweaking. >>>> >>>>Indeed you can, but be sure _not_ to make performance comparisons based to perft >>>>or perf only. In normal search you should generate 10x (or more)the moves you >>>>actually make. So if you make modifications that slow your movemakeing down and >>>>speed your movegen up you might get different results in search and perft. Perft >>>>will probably indicate that you are slower but in reality you are faster. And a >>>>better result in perft might mean worse result in search... :( >>> >>>Do you use 0x88? >>> >>>I am experimenting with using a common internal format that is easily translated >>>into other formats. I change from bitmaps to 0x88 when the board is dense or >>>sparse. >> >>I am using MMX registers in my program (64-bit :) as they seem to significantly >>increase performance when working with bitboards. >> >>I also re-designed my diagonal bitboards so that pairs of diagonals fit within a >>byte. I replaced the SHIFT/AND with... >> >> _ESI = (unsigned long)fsq;\ >> asm lea EDI,bbArray1;\ >> asm movzx EAX,bbRankContentsOffset[ESI];\ >> asm movzx EBX,bbFileContentsOffset[ESI];\ >> asm movzx ECX,bbLDiagContentsOffset[ESI];\ >> asm movzx EDX,bbRDiagContentsOffset[ESI];\ >> asm movzx EAX,byte ptr [EDI+EAX+bbRankOccupied*8];\ >> asm movzx EBX,byte ptr [EDI+EBX+bbFileOccupied*8];\ >> asm movzx ECX,byte ptr [EDI+ECX+bbLDiagOccupied*8];\ >> asm movzx EDX,byte ptr [EDI+EDX+bbRDiagOccupied*8];\ >> >>which finds the byte offset in the bitboard using the square number, >>then loads the contents of a diagonal into a register using the byte offset. >>This seems to have produced a slight increase in performance. > >How much of a speed increase did you get from using MMX? I got only about a 35% >increase. > >Regards, > >Landon That sounds about right Landon. I tuned the instructions as best I could but I make so many storage references that the MMX instructions do not pair. I read some tuning doc that says MMX instructions will not pair if they reference data in memory and the instructions follow one another. I wrote non-MMX code in assembly but still could not beat the MMX instructions.
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.