Parallel Execution of Logic Programs

models for OR parallelism fall into three broad categories. The first, called “pure” OR parallelism, consists of a parallel search of the goal tree. The earliest system of this type was designed by Haridi and Ciepielewski [11]. When a searching process comes to a choice point, it can fork new processes for each alternative. Processes proceed from that point with very little interaction. If a process cannot unify its first literal with any program clause, it simply terminates; if it derives the null clause, it announces the result and then terminates. There is no need to send any information to another active search process. The second form of OR parallelism is based on objects called OR processes. In this model, a process corresponds to an object of Actors or Smalltalk [36, 41]. Each process is responsible for executing a small piece of the program. It maintains local state information, and communicates with other objects via messages. The third form, called search parallelism by Conery and Kibler [21], is based on a physical partitioning of the program. Clauses are stored in different nodes of a machine such as a multiprocessor database machine. The common aspect of the models in this category is that unification is done at the nodes where the clauses are stored, while the derivation of resolvents and overall control decisions are carried out by a different process. Two major issues in the exploitation of OR parallelism are the combinatorial explosion in the number of processes and representation of variable binding environments. Nondeterministic logic programs may have too much 38 Parallelism in Logic Programs

[1]  Alvin M. Despain,et al.  Semi-Intelligent Backtracking of Prolog Based on Static Data Dependency Analysis , 1985, SLP.

[2]  David Warren,et al.  Warplan: a system for generating plans , 1974 .

[3]  Akihiko Konagaya,et al.  Design of a high-speed Prolog machine (HPM) , 1985, ISCA '85.

[4]  Salvatore J. Stolfo,et al.  Logic Programming Using Parallel Associative Operations , 1984, SLP.

[5]  David H. D. Warren Logic programming and compiler writing , 1980, Softw. Pract. Exp..

[6]  Michael J. Wise,et al.  A parallel Prolog: The construction of a data driven model , 1982, LFP '82.

[7]  Kazunori Ueda,et al.  Guarded Horn Clauses , 1986, LP.

[8]  John W. Backus,et al.  Can programming be liberated from the von Neumann style?: a functional style and its algebra of programs , 1978, CACM.

[9]  David H. D. Warren,et al.  An Efficient Easily Adaptable System for Interpreting Natural Language Queries , 1982, CL.

[10]  G. Jack Lipovski,et al.  B-Log: A Branch and Bound Methodology for the Parallel Execution of Logic Programs , 1985, ICPP.

[11]  David H. D. Warren,et al.  Definite Clause Grammars for Language Analysis - A Survey of the Formalism and a Comparison with Augmented Transition Networks , 1980, Artif. Intell..

[12]  Naoyuki Tamura,et al.  Implementing Parallel Prolog on a Multiprocessor Machine , 1984, International Conference on Spoken Language Processing.

[13]  Keith L. Clark,et al.  Notes on System Programming in Parlog , 1984, FGCS.

[14]  Alain J. Martin,et al.  The Sync Model: A Parallel Execution Method for Logic Programming , 1986, SLP.

[15]  Peter Borgwardt,et al.  Distributed Semi-intelligent Backtracking for a Stack-based AND-parallel Prolog , 1986, SLP.

[16]  Benjamin W. Wah,et al.  MANIP-2 : A Multicomputer Architecture for Evaluating Logic Programs , 1985, ICPP.

[17]  Chuan-lin Wu,et al.  A Parallel Execution Model of Logic Programs , 1991, IEEE Trans. Parallel Distributed Syst..

[18]  Seif Haridi,et al.  A Formal Model for Or-Parallel Execution of Logic Programs , 1983, IFIP Congress.

[19]  Seif Haridi,et al.  Control of Activities in the Or-Parallel Token Machine (Abstract) , 1983, Logic Programming Workshop.

[20]  Katsuhiko Nakamura Associative Concurrent Evaluation of Logic Programs , 1984, J. Log. Program..

[21]  Jan Maluszynski,et al.  AND-Parallelism with Intelligent Backtracking for Annotated Logic Programs , 1985, SLP.

[22]  Laxmikant V. Kalé,et al.  Executing Distributed Prolog Programs on a Broadcast Network , 1984, International Conference on Spoken Language Processing.

[23]  Nils J. Nilsson,et al.  Problem-solving methods in artificial intelligence , 1971, McGraw-Hill computer science series.

[24]  Luís Moniz Pereira,et al.  Deduction Revision by Intelligent Backtracking , 1984, Implementations of Prolog.

[25]  Yuji Matsumoto,et al.  Prolog Interpreter Based on Concurrent Programming , 1982, ICLP.

[26]  Edsger W. Dijkstra,et al.  A Discipline of Programming , 1976 .

[27]  Ken Satoh,et al.  KABU-WAKE: A New Parallel Inference Method and Its Evaluation , 1986, COMPCON.

[28]  F. Warren Burton,et al.  Executing functional programs on a virtual tree of processors , 1981, FPCA '81.

[29]  Kenneth A. Bowen Concurrent Execution of Logic , 1982, ICLP.

[30]  Luís Monteiro A Horn Clause-like Logic for Specifying Concurrency , 1982, ICLP.

[31]  David Robson,et al.  Smalltalk-80: The Language and Its Implementation , 1983 .

[32]  Ehud Shapiro,et al.  A subset of Concurrent Prolog and its interpreter , 1988 .

[33]  Robert A. Kowalski,et al.  The Semantics of Predicate Logic as a Programming Language , 1976, JACM.

[34]  Bruce J. MacLennan Introduction to relational programming , 1981, FPCA '81.

[35]  Jim A. Crammond,et al.  An Architecture for Parallel Logic Languages , 1984, ICLP.

[36]  Gary Lindstrom,et al.  Or-Parallelism on Applicative Architectures , 1984, International Conference on Logic Programming.

[37]  Robert A. Kowalski,et al.  Predicate Logic as Programming Language , 1974, IFIP Congress.

[38]  P. A. Subrahmanyam,et al.  The "Software Engineering" of Expert Systems: Is Prolog Appropriate? , 1985, IEEE Transactions on Software Engineering.

[39]  C. A. R. Hoare,et al.  Communicating sequential processes , 1978, CACM.

[40]  Péter Kacsuk,et al.  A Highly Parallel Prolog Interpreter Based on the Generalized Data Flow Model , 1984, International Conference on Logic Programming.

[41]  Peter Borgwardt Parallel Prolog Using Stack Segements on Shared-Memory Multiprocessors , 1984, SLP.

[42]  Jim A. Crammond A comparative study of unification algorithms for OR-parallel execution of logic languages , 1985, IEEE Transactions on Computers.

[43]  Yale N. Patt,et al.  Performance studies of a Prolog machine architecture , 1985, ISCA '85.

[44]  Alberto Martelli,et al.  An Efficient Unification Algorithm , 1982, TOPL.

[45]  Keith L. Clark,et al.  PARLOG: parallel programming in logic , 1986, ACM Trans. Program. Lang. Syst..

[46]  Maurice Bruynooghe,et al.  Solving Combinatorial Search Problems by Intelligent Backtracking , 1981, Inf. Process. Lett..

[47]  D. A. Turner,et al.  A new implementation technique for applicative languages , 1979, Softw. Pract. Exp..

[48]  Keith L. Clark,et al.  A relational language for parallel programming , 1981, FPCA '81.

[49]  Robert A. Kowalski,et al.  Logic and semantic networks , 1979, CACM.

[50]  Verónica Dahl,et al.  On database systems development through logic , 1982, TODS.

[51]  Edward Paul Katz A realization of relational semantics in an automatic programming system. , 1978 .

[52]  David H. D. Warren,et al.  Applied logic : its use and implementation as a programming tool , 1978 .

[53]  J. A. Robinson,et al.  A Machine-Oriented Logic Based on the Resolution Principle , 1965, JACM.

[54]  Keith L. Clark,et al.  Negation as Failure , 1987, Logic and Data Bases.

[55]  John S. Conery,et al.  The and/or process model for parallel interpretation of logic programs , 1983 .

[56]  Prakash Panangaden,et al.  Stream-Based Execution of Logic Programming , 1984, SLP.

[57]  Domenico Talia,et al.  Concurrent logic programming: PARLOG and Concurrent Prolog , 1991 .

[58]  Doug DeGroot,et al.  AND-Parallelism of Logic Programs Based on a Static Data Dependency Analysis , 1985, COMPCON.

[59]  Norbert Eisinger,et al.  Logic Programming: A Parallel Approach , 1982, ICLP.

[60]  Bruce W. Porter,et al.  Episodic Learning , 1983, AAAI.

[61]  Luís Moniz Pereira Logic Control with Logic , 1982, Implementations of Prolog.

[62]  Rex L. Page,et al.  If-then-else as a concurrency inhibitor in eager beaver evaluation of recursive programs , 1981, FPCA '81.

[63]  Robert M. Keller,et al.  Rediflow Multiprocessing , 1984, COMPCON.

[64]  Hiroshi Nakashima,et al.  Hardware Design and Implementation of the Personal Sequential Inference Machine (PSI) , 1984, Fifth Generation Computer Systems.

[65]  Doug DeGroot,et al.  Restricted AND-Parallelism , 1984, FGCS.

[66]  Jack Minker,et al.  Logic and Data Bases , 1978, Springer US.

[67]  Simon Kasif,et al.  PRISM - A Parallel Inference System for Problem Solving , 1983, Logic Programming Workshop.

[68]  Hiroshi Nakagawa,et al.  AND Parallel PROLOG with Divided Assertion Set , 1984, SLP.

[69]  Henry Lieberman,et al.  Specifying and Proving Properties of Guardians for Distributed Systems , 1979, Semantics of Concurrent Computation.

[70]  John C. Mitchell,et al.  On the Sequential Nature of Unification , 1984, J. Log. Program..

[71]  Mary Shaw,et al.  Abstraction and verification in Alphard: Defining and specifying iteration and generators , 1977 .

[72]  Jeffrey D. Ullman,et al.  Introduction to Automata Theory, Languages and Computation , 1979 .

[73]  Kim P. Gostelow,et al.  Performance of a Simulated Dataflow Computer , 1980, IEEE Transactions on Computers.

[74]  Dennis F. Kibler,et al.  Parallel interpretation of logic programs , 1981, FPCA '81.

[75]  David H. D. Warren,et al.  Prolog - the language and its implementation compared with Lisp , 1977, Artificial Intelligence and Programming Languages.

[76]  David H. D. Warren,et al.  Efficient Processing of Interactive Relational Data Base Queries expressed in Logic , 1981, VLDB.