Author: Robert Hyatt
Date: 18:20:03 08/13/99
Go up one level in this thread
On August 13, 1999 at 18:31:47, William Bryant wrote: >Bob, > I have read in multiple posts your description of Cray Blitz and the use of >vectors to increase the evaluation function at little time cost. > > Now that microprocessors are adding vector processing units, and I am >specifically refering to the 128 bit AltiVec instructions being added to the >new G4 processors, does this have implications or application to chess >programming. With an internal 128 bit vector processing unit (including a 128 >bit internal bus to the L2 catch if I read correctly), could the evaluation of a >microcomputer chess program add some the more advanced features of evaluations >Cray Blitz's evaluation. > > If so, could you elaborate or provide a pointer in the right direction for >further investigation. In addition to the raw speed increases of the next >generation processors, it would be nice to use this increaces internal >bandwidth. > > If I am missing the boat somewhere, let me know. My background is not in >computer science. > >William >wbryant@ix.netcom.com Here is one idea of many: take bishop mobility, where you would like to compute some sort of mobility score, but not just a 'uniform bonus' for each square a bishop can move to. So you create a 64 word array of the bonus you would like to assign for each square. IE (these are random, but give the idea): 0 0 0 0 0 0 0 0 0 5 5 5 5 5 5 0 0 5 7 7 7 7 5 0 0 5 7 10 10 7 5 0 0 5 7 10 10 7 5 0 0 5 7 7 7 7 5 0 0 5 5 5 5 5 5 0 0 0 0 0 0 0 0 0 Now you do the usual 'bitmap' attack vector (64 bit int) for a bishop on any square you want, and it will have 1 bits set for the squares that the bishop directly attacks. I then use a "vector merge" operation that uses this bitmap to select elements of the above vector to copy into a result vector. The point being that this happens essentially instantly, letting me select the scores from the above array that represent the squares attacked by the bishop. Summing that resulting vector into a scalar score is then trivial. This same sort of idea works in lots of places. IE ifyou want to find out whether a bishop attacks (directly) the opponent's king field, you load the diagonal vector. Which gives you the entire diagonal free of cost. You can find out how many 'blockers' there are by a similar sort of trick to see if the bishop is blocked from the opponent's king by 1, 2, .., N pieces and pawns. Takes a new way of thinking... and I am not sure PC platforms will provide Cray functionality, to support the above sort of things. They most likely will support raw vector computation, but leave out the cute selection/comparison stuff due to the number of transistors it takes...
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.