Compiling scientific code using partial evaluation

The partial evaluation approach, which transforms a high-level program into a low-level program that is specialized for a particular application, exposing the parallelism inherent in the underlying numerical computation, is discussed. A prototype compiler that uses partial evaluation is described. Experiments with the compiler have shown that for an important class of numerical programs, partial evaluation can provide marked performance improvements: speedups over conventionally compiled code that range from seven times faster to 91 times faster have been measured. By coupling partial evaluation with parallel scheduling techniques, the low-level parallelism inherent in a computation can be exploited on heavily pipelined or parallel architectures. The approach has been demonstrated by applying a parallel scheduler to a partially evaluated program that simulates the motion of a nine-body solar system.<<ETX>>

[1]  L. Morris Automatic generation of time efficient digital signal processing software , 1977 .

[2]  Philip Wadler,et al.  Listlessness is better than laziness: Lazy evaluation and garbage collection at compile-time , 1984, LFP '84.

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

[4]  John R. Ellis,et al.  Bulldog: A Compiler for VLIW Architectures , 1986 .

[5]  Slocum Miller James,et al.  Multischeme : a parallel processing system based on MIT scheme , 1987 .

[6]  Feng Zhao,et al.  An {\it bf O(N)} Algorithm for Three-Dimensional N-body Simulations , 1987 .

[7]  Barry K. Rosen,et al.  HSS--A High-Speed Simulator , 1987, IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems.

[8]  Gerald Jay Sussman,et al.  Abstraction in numerical methods , 1987 .

[9]  Randal E. Bryant,et al.  COSMOS: a compiled simulator for MOS circuits , 1987, DAC '87.

[10]  G. Sussman,et al.  Numerical Evidence That the Motion of Pluto Is Chaotic , 1988, Science.

[11]  Gerald J. Sussman,et al.  Tutorial: abstraction in numerical methods , 1988, LISP and Functional Programming.

[12]  Dines Bjørner,et al.  Partial Evaluation and Mixed Computation: Proceedings of the IFIP TC2 Workshop, Gammel Avernaes, Denmark, 18-24 Oct., 1987 , 1988 .

[13]  Gerald Roylance Expressing mathematical subroutines constructively , 1988, LFP '88.

[14]  David E. Culler,et al.  Assessing the Benefits of Fine- Grain Parallelism in Dataflow Programs , 1988 .

[15]  Neil D. Jones,et al.  Mix: A self-applicable partial evaluator for experiments in compiler generation , 1989, LISP Symb. Comput..

[16]  Harold Abelson The Bifurcation Interpreter: A Step Towards the Automatic Analysis of Dynamical Systems , 1989 .

[17]  Craig Chambers,et al.  Customization: optimizing compiler technology for SELF, a dynamically-typed object-oriented programming language , 1989, PLDI '89.

[18]  Andrew Berlin A Compilation Strategy for Numerical Programs Based on Partial Evaluation , 1989 .

[19]  Norman P. Jouppi,et al.  Available instruction-level parallelism for superscalar and superpipelined machines , 1989, ASPLOS III.