Reducing and Vectorizing Procedures for Telescoping Languages

At Rice University, we have undertaken a project to construct a framework for generating high-level problem solving languages that can achieve high performance on a variety of platforms. The underlying strategy, called telescoping languages, builds problem-solving systems from domain-specific libraries and scripting languages by extensively preanalyzing libraries to produce a precompiler that optimizes library calls within the scripts as if they were primitives in the underlying language. Our study of applications written in Matlab by the signal processing group at Rice University has identified a collection of old and new optimizations that show promise for this particular domain. Two promising new optimizations are procedure vectorization and procedure strength reduction. By transforming these programs, at source level, according to the strategies described in this paper, we were able to achieve speedups ranging from a factor of 1.1 to 1.6 over the entire applications—with speedups for individual functions as high as 3.3.

[1]  Linda Torczon,et al.  Interprocedural constant propagation: a study of jump function implementation , 1993, PLDI '93.

[2]  Bo Kågström,et al.  A CONLAB Compiler for a Distributed Memory Multicomputer , 1993, PPSC.

[3]  Philip S. Abrams,et al.  An APL machine , 1970 .

[4]  Ken Kennedy,et al.  Interprocedural transformations for parallel code generation , 1991, Proceedings of the 1991 ACM/IEEE Conference on Supercomputing (Supercomputing '91).

[5]  David A. Padua,et al.  Techniques for the translation of MATLAB programs into Fortran 90 , 1999, TOPL.

[6]  Ken Kennedy,et al.  Telescoping Languages: A Strategy for Automatic Generation of Scientific Problem-Solving Systems from Annotated Libraries , 2001, J. Parallel Distributed Comput..

[7]  Luiz A. DeRose,et al.  Compiler techniques for MATLAB programs , 1996 .

[8]  Calvin Lin,et al.  An annotation language for optimizing software libraries , 1999, DSL '99.

[9]  Ken Kennedy,et al.  Telescoping languages: a compiler strategy for implementation of high-level domain-specific programming systems , 2000, Proceedings 14th International Parallel and Distributed Processing Symposium. IPDPS 2000.

[10]  Ken Kennedy,et al.  Automatic translation of FORTRAN programs to vector form , 1987, TOPL.

[11]  Keshav Pingali,et al.  A case for source-level transformations in MATLAB , 1999, DSL '99.

[12]  Andreas Griewank,et al.  Evaluating derivatives - principles and techniques of algorithmic differentiation, Second Edition , 2000, Frontiers in applied mathematics.

[13]  Keith D. Cooper,et al.  Effective partial redundancy elimination , 1994, PLDI '94.

[14]  Michael J. Quinn,et al.  Otter: bridging the gap between MATLAB and ScaLAPACK , 1998, Proceedings. The Seventh International Symposium on High Performance Distributed Computing (Cat. No.98TB100244).

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

[16]  Mike Paterson,et al.  Linear unification , 1976, STOC '76.

[17]  Ken Kennedy,et al.  An Implementation of Interprocedural Bounded Regular Section Analysis , 1991, IEEE Trans. Parallel Distributed Syst..

[18]  Keshav Pingali,et al.  High-level semantic optimization of numerical codes , 1999, ICS '99.

[19]  Jack J. Dongarra,et al.  Automatically Tuned Linear Algebra Software , 1998, Proceedings of the IEEE/ACM SC98 Conference.

[20]  François Bodin,et al.  Menhir: An Environment for High Performance Matlab , 1998, LCR.