Partial evaluation applied to numerical computation

There have been many demonstrations that the expressive power of Lisp can greatly simplify the process of writing numerical programs, but at the cost of reduced performance.[10][16] I show that by coupling Lisp's abstract, expressive style of programming with a compiler that uses partial evaluation, data abstractions can be eliminated at compile time, producing extremely high-performance code. For an important class of numerical programs, partial evaluation achieves order-of-magnitude speed-ups over conventional Lisp compilation technology. This approach has proven to be especially effective when used in conjunction with schedulers for VLIW and highly pipelined architectures, because the elimination of data structures and procedural abstractions exposes the low-level parallelism inherent in a computation.

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

[2]  Henryk Jan Komorowski,et al.  A specification of an abstract Prolog machine and its application to partial evaluation , 1981 .

[3]  R. Schooler,et al.  PARTIAL EVALUATION AS A MEANS OF LANGUAGE EXTENSIBILITY , 1984 .

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

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

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

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

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

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

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

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

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

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

[14]  Andrew A. Berlin,et al.  Compiling scientific code using partial evaluation , 1990, Computer.