Communication lifting: fixed point computation for parallelism

Communication lifting is a program transformation that can be applied to a synchronous process network to restructure the network. This restructuring in theory improves sequential and parallel performance. The transformation has been formally speciied and proved correct and it has been implemented as an automatic program transformation tool. This tool has been applied to a small set of programs consisting of synchronous process networks. Measurements indicate performance gains in practice both with sequential and parallel evaluation. Communication lifting is a worthwhile optimisation to be included in a compiler for a lazy functional language.

[1]  Philip Wadler,et al.  Deforestation: Transforming Programs to Eliminate Trees , 1990, Theor. Comput. Sci..

[2]  D. A. Turner,et al.  Miranda: A Non-Strict Functional language with Polymorphic Types , 1985, FPCA.

[3]  Gilles Kahn,et al.  The Semantics of a Simple Language for Parallel Programming , 1974, IFIP Congress.

[4]  Paul H. J. Kelly Functional programming for loosely-coupled multiprocessors , 1989, Research monographs in parallel and distributed computing.

[5]  Nicolas Halbwachs,et al.  LUSTRE: a declarative language for real-time programming , 1987, POPL '87.

[6]  Richard S. Bird,et al.  Introduction to functional programming , 1988, Prentice Hall International series in computer science.

[7]  Johan Jeuring Theories for Algorithm Calculation , 1993 .

[8]  J. Vuillemin Proof techniques for recursive programs , 1973 .

[9]  Lloyd Allison,et al.  A Practical Introduction to Denotational Semantics , 1987 .

[10]  Willem G. Vree,et al.  Arrays in a lazy functional language -- a case study: the fast Fourier transform , 1992 .

[11]  Paul Le Guernic,et al.  SIGNAL: A declarative language for synchronous programming of real-time systems , 1987, FPCA.

[12]  Pieter H. Hartel,et al.  Compilation of functional languages using flow graph analysis , 1994, Softw. Pract. Exp..

[13]  Simon L. Peyton Jones,et al.  The Implementation of Functional Programming Languages , 1987 .

[14]  William W. Wadge,et al.  Lucid, a nonprocedural language with iteration , 1977, CACM.

[15]  John Darlington,et al.  A Transformation System for Developing Recursive Programs , 1977, J. ACM.

[16]  Nicolas Halbwachs,et al.  LUSTRE: A declarative language for programming synchronous systems* , 1987 .

[17]  Pieter H. Hartel,et al.  FCG: A Code Generator for Lazy Functional Languages , 1992, CC.

[18]  Simon L. Peyton Jones,et al.  A short cut to deforestation , 1993, FPCA '93.

[19]  Gérard Berry,et al.  The ESTEREL Synchronous Programming Language and its Mathematical Semantics , 1984, Seminar on Concurrency.