Abstract
In a new approach to the development of sparse codes, the programmer defines a particular algorithm on dense matrices which are actually sparse. The sparsity of the matrices as indicated by the programmer is only dealt with at compile-time. The compiler selects appropriate compact data structure and automatically converts the algorithm into code that takes advantage of the sparsity of the matrices. To achieve efficient sparse codes, the compiler must be able to reshape some access patterns before a data structure is selected. In this paper, we discuss a reshaping method that is based on unimodular transformations.
Support was provided by the Foundation for Computer Science (SION) of the Netherlands Organization for the Advancement of Pure Research (NWO) and the EC Esprit Agency DG XIII under Grant No. APPARC 6634 BRA III.
Preview
Unable to display preview. Download preview PDF.
References
Randy Allen and Ken Kennedy. Automatic translation of fortran programs to vector form. ACM Transactions on Programming Languages and Systems, Volume 9:491–542, 1987.
Corinne Ancourt and Francois Irigoin. Scanning polyhedra with do loops. In Proceedings of Third ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming, pages 39–50, 1989.
U. Banerjee. Dependence Analysis for Supercomputing. Kluwer Academic Publishers, Boston, 1988.
U. Banerjee. Unimodular transformations of double loops. In Proceedings of Third Workshop on Languages and Compilers for Parallel Computing. 1990.
U. Banerjee. Loop Transformations for Restructuring Compilers: The Foundations. Kluwer Academic Publishers. Boston, 1993.
Aart J.C. Bik and Harry A.G. Wijshoff. Advanced compiler optimizations for sparse computations. In Proceedings of Supercomputing 93, pages 430–439, 1993.
Aart J.C. Bik and Harry A.G. Wijshoff. Compilation techniques for sparse matrix computations. In Proceedings of the International Conference on Supercomputing, pages 416–424, 1993.
Aart J.C. Bik and Harry A.G. Wijshoff. MT1: A prototype restructuring compiler. Technical Report no. 93-32, Dept. of Computer Science, Leiden University, 1993.
Aart J.C. Bik and Harry A.G. Wijshoff. On automatic data structure selection and code generation for sparse computations. In Proceedings of the Sixth International Workshop on Languages and Compilers for Parallel Computing, pages 57–75, 1993. Lecture Notes in Computer Science, No. 768.
Aart J.C. Bik and Harry A.G. Wijshoff. Nonzero structure analysis. In Proceedings of the International Conference on Supercomputing, 1994. To appear.
Aart J.C. Bik and Harry A.G. Wijshoff. On a completion method for unimodular matrices. Technical Report no. 94-14, Dept. of Computer Science, Leiden University, 1994.
Aart J.C. Bik and Harry A.G. Wijshoff. On strategies for generating sparse codes. Technical Report In Progress, Dept. of Computer Science, Leiden University, 1994.
George B. Dantzig and B. Curtis Eaves. Fourier-Motzkin elimination and its dual. Journal of Combinatorial Theory, Volume 14:288–297, 1973.
David S. Dodson, Roger G. Grimes, and John G. Lewis. Algorithm 692: Model implementation and test package for the sparse linear algebra subprograms. ACM Transactions on Mathematical Software, Volume 17:264–272, 1991.
Michael L. Dowling. Optimal code parallelization using unimodular transformations. Parallel Computing, Volume 16:157–171, 1990.
I.S. Duff, A.M. Erisman, and J.K. Reid. Direct Methods for Sparse Matrices. Oxford Science Publications, 1990.
I.S. Duff, Roger G. Grimes, and John G. Lewis. Sparse matrix test problems. ACM Transactions on Mathematical Software, Volume 15:1–14, 1989.
Fred G. Gustavson. Two fast algorithms for sparse matrices: Multiplication and permuted transposition. ACM Transactions on Mathematical Software, Volume 4:250–269, 1978.
Wei Li and Keshav Pingali. A singular loop transformation framework based on nonsingular matrices. In Proceedings of the Fifth Workshop on Languages and Compilers for Parallel Computing, 1992.
John Michael McNamee. Algorithm 408: A sparse matrix package. Communications of the ACM, pages 265–273, 1971.
Morris Newman. Integral Matrices. Academic Press, New York, 1972. Pure and Applied Mathematics, Volume 45.
David A. Padua and Michael J. Wolfe. Advanced compiler optimizations for supercomputers. Communications of the ACM, pages 1184–1201, 1986.
Sergio Pissanetsky. Sparse Matrix Technology. Academic Press, London, 1984.
C.D. Polychronoupolos. Parallel Programming and Compilers. Kluwer Academic Publishers, Boston, 1988.
Michael E. Wolf and Monica S. Lam. A data locality optimizing algorithm. In Proceedings ACM SIGPLAN 91 Conference on Programming Languages Design and Implementation, pages 30–44, 1991.
Michael E. Wolf and Monica S. Lam. A loop transformation theory and an algorithm to maximize parallelism. IEEE Transactions on Parallel and Distributed Algorithms, pages 452–471, 1991.
Michael J. Wolfe. Loop Skewing: The wavefront method revisited. International Journal of Parallel Programming, Volume 15:279–293, 1986.
Michael J. Wolfe. Optimizing Supercompilers for Supercomputers. Pitman, London, 1989.
H. Zima. Supercompilers for Parallel and Vector Computers. ACM Press, New York, 1990.
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
© 1995 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Bik, A.J.C., Knijnenburg, P.M.W., Wijshoff, H.A.G. (1995). Reshaping access patterns for generating sparse codes. In: Pingali, K., Banerjee, U., Gelernter, D., Nicolau, A., Padua, D. (eds) Languages and Compilers for Parallel Computing. LCPC 1994. Lecture Notes in Computer Science, vol 892. Springer, Berlin, Heidelberg. https://doi.org/10.1007/BFb0025893
Download citation
DOI: https://doi.org/10.1007/BFb0025893
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-58868-9
Online ISBN: 978-3-540-49134-7
eBook Packages: Springer Book Archive