Declarative solutions to partitioned‐grid problems

The problem of partitioning grid-based applications for parallel computing can be eeciently and intuitively solved in pure Prolog, using only the single assignment property of the logic variable, and not the backtracking. We show that these pure Prolog solutions can be transformed in a systematic way into cyclic functional programs. These functional programs can be executed more rapidly than the original Prolog programs. 1 Introduction Many processes in nature are modelled by partial diierential equations. Examples of such processes are the weather, the tides, uid currents in general, stress analysis of large constructions , electronics, acoustics, optics etc. In a recent book on solving partial diierential equations on parallel computers case studies are presented concerning wave propagation, petrol engineering, aerodynamics, discrete simulation, elasticity and quantum mechanics 19]. Solving sparse symmetric linear systems that arise from discretization of elliptic partial diierential equations is one of the main problems in computation science 21]. All methods for solving partial diierential equations give rise to the same kind of computational structure: iterative grid-based calculations. An important property of these calculations is locality in grid-space, that is to compute the value of a certain grid point one only needs to know the value of the directly surrounding grid points. Locality is a direct consequence of physical reality, in which the elementary particles such as atoms or molecules have no global knowledge of the macroscopic processes that we observe. These iterative grid-based problems constitute a large class of useful applications that are ideally suited for distributed parallel processing. An important technique to implement such problems on a distributed computer is domain decomposition 21]. The technique is based on a spatial version of the divide and conquer strategy. Domain decomposition divides problem into a number of smaller problems. The subproblems are solved in parallel and the results are combined. This process is then repeated until the problem as a whole is solved.

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

[2]  Pieter Koopman,et al.  Functional programs as executable specifications , 1990 .

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

[4]  Hendrik Pieter Barendregt,et al.  Functional Programming and the Language TALE , 1986, Current Trends in Concurrency.

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

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

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

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

[9]  Uday S. Reddy,et al.  Transformation of Logic Programs into Functional Programs , 1984, SLP.

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

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

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

[13]  Simon L. Peyton Jones,et al.  Report on the programming language Haskell: a non-strict, purely functional language version 1.2 , 1992, SIGP.

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

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

[16]  Keshav Pingali,et al.  Accumulators: A New Logic Variable Abstractions for Functional Languages , 1988, FSTTCS.

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

[18]  Lennart Augustsson,et al.  PH Language Reference Manual, Version 1.0---preliminary , 1995 .

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

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

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

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

[23]  Michael Hanus,et al.  The integration of functions into logic programming: a survey , 1994 .

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

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