Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Bob - Question about Cray Blitz and Vector Processing

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.