Representing matrices as quadtrees for parallel processors: extended abstract

2 1. Linked representation can greatly simplify process-decomposition and access-synchronization problems for multiproeessing [4]. 2. Let n-dimensional arrays be represented by 2n-ary trees. 3. A matrix is either NIL (representing the zero matrix of any size), IDE (the identity matrix of any size), a scalar (a lxl matrix), or four equally-sized quadrants, each a matrix. 4. By convention, all matrices are represented by padding them to be square, a power of two in size; the upper-left quadrants are full, but lower and right quadrants may be pure padding. IDE pads the lower-right diagonal (avoiding the introduction of singularities), and NIL pads the right and bottom edges. Variations on the representation are possible: a hybrid scheme has submatrices below a certain size allocated sequentially in row-major order, or the entire matrix may be stored sequentially as a complete quaternary tree [5]. 5. Sparse matrices are implicitly represented sparsely [5]. 6. Accessing the [i,jl th element of a matrix is a tree probe, discharging a high-order bit from the binary representation of each of i and j at each step from the root toward the leaf; the two bits indicate in which of the four qua-drants'the element lies. 7. Matrix transpose is effectcd by recursively exchanging upper-right and lower-left quadrants. Alternatively, a bit in a matrix header indicates which of two sets of functions to use for accessing the quadrants of this matrix. 8. Addition of dense 2a×2 a matrices naturally f decomposes into 4 m independent (parallel) and ~/j~/ balanced processes, for any choice of m<n. Even with less uniform balancing (e.g. with /~-~/ ~, sparse matrices), successive decomposition pro-/ vides any number, up to 4 a, of independent ,~ 9. A hybrid algorithm for multiplying compatible matrices: A. If either of the matrices is NIL, their product is NIL. If either is IDE, then their product is the other. If both are scalars, use scalar multiplication, but translate a product of 0 to NIL, of 1 to IDE.