The Use of the Tupling Strategy in the Development of Parallel Programs

We present a technique for developing efficient functional programs by using optimal synchronizations among function calls. This technique is based on the application of the tupling strategy and it works for a wide class of functions defined by recursive equations. The derived programs are shown to have minimal redundancy, in the sense that repeated computations of identical recursive calls are never performed and identical subexpressions may be recomputed a number of times which is linearly bounded w.r.t. the depth of the recursion. The derived programs also have minimal spatial synchronization, in the sense that only a minimal number of computations are synchronized together, without increasing the parallel computation time.

[1]  Andrzej Skowron,et al.  Communicating agents for applicative concurrent programming , 1982, Symposium on Programming.

[2]  John R. Gurd,et al.  Transforming Recursive Programs for Execution on Parallel Machines , 1985, FPCA.

[3]  Benjamin Goldberg Buckwheat: graph reduction on a shared-memory multiprocessor , 1988, LFP '88.

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

[5]  J. M. Morris Programs from specifications , 1989 .

[6]  Willem G. Vree,et al.  FRATS: A Parallel Reduction Strategy for Shared Memory , 1991, PLILP.

[7]  Marko C. J. D. van Eekelen,et al.  Term Graph Rewriting , 1987, PARLE.

[8]  John Staples,et al.  Computation on Graph-Like Expressions , 1980, Theor. Comput. Sci..

[9]  Alberto Pettorossi,et al.  A powerful strategy for deriving efficient programs by transformation , 1984, LFP '84.

[10]  Lal George,et al.  An abstract machine for parallel graph reduction , 1989, FPCA.

[11]  John Darlington,et al.  An Experimental Program Transformation and Synthesis System , 1986, Artif. Intell..

[12]  Ryszard Janicki,et al.  Transformations of Sequential Specifications into Concurrent Specifications by Synchronization Guards , 1989, Theor. Comput. Sci..

[13]  Richard S. Bird The promotion and accumulation strategies in transformational programming , 1984, TOPL.

[14]  Peter D. Mosses,et al.  Denotational semantics , 1995, LICS 1995.

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

[16]  Martin S. Feather,et al.  A System for Assisting Program Transformation , 1982, TOPL.

[17]  Richard M. Karp,et al.  Parallel Algorithms for Shared-Memory Machines , 1991, Handbook of Theoretical Computer Science, Volume A: Algorithms and Complexity.

[18]  John Darlington,et al.  ALICE a multi-processor reduction machine for the parallel evaluation CF applicative languages , 1981, FPCA '81.

[19]  Bruno Courcelle,et al.  Recursive Applicative Program Schemes , 1991, Handbook of Theoretical Computer Science, Volume B: Formal Models and Sematics.

[20]  P. J. Landin The Mechanical Evaluation of Expressions , 1964, Comput. J..

[21]  Thomas Johnsson,et al.  Parallel graph reduction with the (v , G)-machine , 1989, FPCA.

[22]  Robert Paige,et al.  Finite Differencing of Computable Expressions , 1982, TOPL.

[23]  Norman H. Cohen Eliminating Redundant Recursive Calls. , 1983, TOPL.

[24]  Douglas R. Smith,et al.  KIDS: A Semiautomatic Program Development System , 1990, IEEE Trans. Software Eng..

[25]  Henk Barendregt,et al.  The Lambda Calculus: Its Syntax and Semantics , 1985 .

[26]  Robert E. Tarjan,et al.  Variations on the Common Subexpression Problem , 1980, J. ACM.

[27]  Joseph E. Stoy,et al.  Denotational Semantics: The Scott-Strachey Approach to Programming Language Theory , 1981 .