Declarative solutions to partitioned-grid problems

The problem of partitioning grid-based applications for parallel computing can be solved easily and intuitively in a logic programming language such as Prolog, using only the single assignment property of the logic variable, and not the backtracking. We show that such a logic program can be transformed in a systematic way into a circular functional program, which runs 10 times faster than the original logic program. The transformation proceeds in a number of steps. The first step is novel, and we give a correctness proof. Our reasoning also uses a novel combination of concepts from both the logical and functional paradigms.

[1]  Keshav Pingali,et al.  Accumulators: New Logic Variable Abstractions for Functional Languages , 1991, Theor. Comput. Sci..

[2]  Willem G. Vree,et al.  Experiments wiht Destructive Updates in a Lazy Functional Language , 1994, Comput. Lang..

[3]  Uday S. Reddy,et al.  A Framework of Directionality for Proving Termination of Logic Programs , 1992, JICSLP.

[4]  Massimo Marchiori Logic Programs as term Rewriting Systems , 1994, ALP.

[5]  Massimo Marchiori,et al.  The functional side of logic programming , 1995, FPCA '95.

[6]  Zoltan Somogyi,et al.  The Execution Algorithm of Mercury, an Efficient Purely Declarative Logic Programming Language , 1996, J. Log. Program..

[7]  Gérard Meurant Domain Decomposition Methods for Partial Differential Equations On Parallel Computers , 1988 .

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

[9]  J. W. Lloyd,et al.  Foundations of logic programming; (2nd extended ed.) , 1987 .

[10]  Deepak Kapur,et al.  Transformational Methodology for Proving Termination of Logic Programs , 1998, J. Log. Program..

[11]  Arvind,et al.  M-Structures: Extending a Parallel, Non-strict, Functional Language with State , 1991, FPCA.

[12]  Sandro Etalle,et al.  On the Unification Free Prolog Programs , 1993, MFCS.

[13]  Willem G. Vree,et al.  A toolkit for parallel functional programming , 1995, Concurr. Pract. Exp..

[14]  Arnold W. Heemink,et al.  Stochastic modelling of dispersion in shallow water , 1990 .

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

[16]  Thomas Johnsson,et al.  Attribute grammars as a functional programming paradigm , 1987, FPCA.

[17]  Willem G. Vree,et al.  Communication lifting: fixed point computation for parallelism , 1995, Journal of Functional Programming.

[18]  David Turner Functional programs as executable specifications , 1984, Philosophical Transactions of the Royal Society of London. Series A, Mathematical and Physical Sciences.

[19]  W. F. Clocksin,et al.  Real-Time Functional Queue Operations Using the Logical Variable , 1983, Inf. Process. Lett..

[20]  G. Stelling,et al.  On the construction of computational methods for shallow water flow problems , 1983 .

[21]  Arnold W. Heemink Storm surge prediction using Kalman filtering , 1986 .

[22]  Ron Knott Declarative programming for mathematical exploration , 1994 .

[23]  Philip Wadler,et al.  The Glasgow Haskell Compiler: a technical overview , 1993 .

[24]  Giorgio Levi,et al.  The Relation between Logic and Functional Languages: A Survey , 1986, J. Log. Program..

[25]  Michael Hanus,et al.  The Integration of Functions into Logic Programming: From Theory to Practice , 1994, J. Log. Program..

[26]  Keshav Pingali,et al.  I-structures: data structures for parallel computing , 1986, Graph Reduction.

[27]  David E. Keyes,et al.  Domain-Based Parallelism and Problem Decomposition Methods in Computational Science and Engineering , 1995 .