Automatic Data Structure Selection and Transformation for Sparse Matrix Computations

The problem of compiler optimization of sparse codes is well known and no satisfactory solutions have been found yet. One of the major obstacles is formed by the fact that sparse programs explicitly deal with particular data structures selected for storing sparse matrices. This explicit data structure handling obscures the functionality of a code to such a degree that optimization of the code is prohibited, for instance, by the introduction of indirect addressing. The method presented in this paper delays data structure selection until the compile phase, thereby allowing the compiler to combine code optimization with explicit data structure selection. This method enables the compiler to generate efficient code for sparse computations. Moreover, the task of the programmer is greatly reduced in complexity.

[1]  David A. Padua,et al.  Advanced compiler optimizations for supercomputers , 1986, CACM.

[2]  John G. Lewis,et al.  Sparse extensions to the FORTRAN Basic Linear Algebra Subprograms , 1991, TOMS.

[3]  Alan George,et al.  Computer Solution of Large Sparse Positive Definite , 1981 .

[4]  I. Duff A survey of sparse matrix research , 1977, Proceedings of the IEEE.

[5]  Aart J. C. Bik,et al.  The Use of Iteration Space Partitioning to Construct Representative Simple Sections , 1996, J. Parallel Distributed Comput..

[6]  Joel H. Saltz,et al.  The doconsider loop , 1989, ICS '89.

[7]  K. Gallivan,et al.  MCSPARSE A parallel sparse unsymmetric linear system solver , 1991 .

[8]  Monica S. Lam,et al.  A Loop Transformation Theory and an Algorithm to Maximize Parallelism , 1991, IEEE Trans. Parallel Distributed Syst..

[9]  Joel H. Saltz,et al.  Run-Time Parallelization and Scheduling of Loops , 1991, IEEE Trans. Computers.

[10]  Constantine D. Polychronopoulos,et al.  Parallel programming and compilers , 1988 .

[11]  Yousef Saad,et al.  SPARK: a benchmark package for sparse computations , 1990, ICS '90.

[12]  Aart J. C. Bik,et al.  Compilation techniques for sparse matrix computations , 1993, ICS '93.

[13]  John K. Reid,et al.  Some Design Features of a Sparse Matrix Code , 1979, TOMS.

[14]  Ken Kennedy,et al.  Interactive parallelization of numerical scientific programs , 1989 .

[15]  John G. Lewis,et al.  Algorithm 692: Model implementation and test package for the Sparse Basic Linear Algebra Subprograms , 1991, TOMS.

[16]  Sergio Pissanetzky,et al.  Sparse Matrix Technology , 1984 .

[17]  Vasanth Balasundaram A Mechanism for Keeping Useful Internal Information in Parallel Programming Tools: The Data Access Descriptor , 1990, J. Parallel Distributed Comput..

[18]  Fred G. Gustavson,et al.  Two Fast Algorithms for Sparse Matrices: Multiplication and Permuted Transposition , 1978, TOMS.

[19]  Aart J. C. Bik,et al.  Reshaping Access Patterns for Generating Sparse Codes , 1994, LCPC.

[20]  Aart J. C. Bik,et al.  On Automatic Data Structure Selection and Code Generation for Sparse Computations , 1993, LCPC.

[21]  A. J. C. Bik,et al.  Advanced compiler optimizations for sparse computations , 1993, Supercomputing '93.

[22]  Aart J. C. Bik,et al.  Nonzero structure analysis , 1994, ICS '94.

[23]  Harry Berryman,et al.  Run-Time Scheduling and Execution of Loops on Message Passing Machines , 1990, J. Parallel Distributed Comput..

[24]  Utpal Banerjee,et al.  Loop Transformations for Restructuring Compilers: The Foundations , 1993, Springer US.

[25]  Ken Kennedy,et al.  Procedure cloning , 1992, Proceedings of the 1992 International Conference on Computer Languages.

[26]  Z. Zlatev Computational Methods for General Sparse Matrices , 1991 .

[27]  Barbara M. Chapman,et al.  Supercompilers for parallel and vector computers , 1990, ACM Press frontier series.

[28]  Jack J. Dongarra,et al.  Solving linear systems on vector and shared memory computers , 1990 .

[29]  Aart J. C. Bik,et al.  Construction of Representative Simple Sections , 1995, ICPP.

[30]  I. Duff,et al.  Direct Methods for Sparse Matrices , 1987 .

[31]  Iain S. Duff,et al.  Sparse matrix test problems , 1982 .

[32]  Joost Engelfriet,et al.  Attribute Grammars: Attribute Evaluation Methods , 1984, Method and tools for compiler construction.

[33]  Alfred V. Aho,et al.  Compilers: Principles, Techniques, and Tools , 1986, Addison-Wesley series in computer science / World student series edition.

[34]  Harry A. G. Wijshoff Implementing sparse BLAS primitives on concurrent/vector processors: a case study , 1993 .