A High Performance OR-parallel Prolog System

P ROLOG, the most popular logic programming language, has been developed for single-processor computers. The implementations of sequential Prolog became eecient with the development of the Warren Abstract Machine (WAM) and are still improving. Today many parallel computers are commercially available and the question is how to utilize this opportunity to speed up the execution of Prolog programs. Our approach has been to study and develop eecient techniques for implementing OR-parallel systems for the full Prolog language on UMA and NUMA computers. Based on those techniques a high performance OR-parallel Prolog system has been designed and implemented on six diierent parallel computers. The system has a number of processes, called workers, consisting of two components: the engine, which does the actual Prolog work, and the scheduler. The schedulers, working together, divide the available work between the engines and support the sequential semantics of Prolog. We have extended the WAM, resulting in a Prolog engine with almost the same speed as the original WAM, i.e. the OR-parallel execution model preserves the high eeciency of the sequential implementation. We have designed and implemented a scheduler supporting dynamic load balancing and low overhead. We have also designed and implemented a clean interface between the engine and the scheduler, improving the modularity of the system and preserving its high eeciency. We have developed tools for debugging and evaluating the system. The evaluation of the system on Sequent Symmetry and on BBN Butterry machines I and II shows very promising results in absolute speed and also in comparison with results of the other OR-parallel systems. A layered approach for building a simple and eecient OR-parallel Prolog system by extending any sequential Prolog implementation based on the WAM has been designed.

[1]  Ewing Lusk,et al.  Using automated reasoning tools: A study of the semigroupF2B2 , 1987 .

[2]  Khayri A. M. Ali,et al.  OR-Parallel Speedups in a Knowledge Based System: on Muse and Aurora , 1992, FGCS.

[3]  Péter Szeredi,et al.  Scheduling Or-parallelism in Aurora: The Manchester Scheduler , 1989, International Conference on Logic Programming.

[4]  Richard A. O'Keefe,et al.  Efficient Implementation of a Defensible Semantics for Dynamic PROLOG Code , 1987, International Conference on Logic Programming.

[5]  Ewing L. Lusk,et al.  A Graphical Tool for Observing the Behavior of Parallel Logic Programs , 1987, SLP.

[6]  Khayri A. M. Ali OR parallel execution of horn clause programs based on WAM and shared control information , 1988 .

[7]  Philippe Robert,et al.  The PEPSys Model: Combining Backtracking, AND- and OR-Parallelism , 1987, SLP.

[8]  Seif Haridi,et al.  OR-Parallel Prolog Made Efficient on Shared Memory Multiprocessors , 1987, SLP.

[9]  Péter Szeredi Performance Analysis of the Aurora Or-Parallel Prolog System , 1989, NACLP.

[10]  Lynette Hirschman,et al.  OR-Parallel Speed-Up in Natural Language Processing: A Case Study , 1988, ICLP/SLP.

[11]  Mats Carlsson,et al.  A Simplified Approach to the Implementation of AND-Parallelism in an OR-Parallel Environment , 1988, ICLP/SLP.

[12]  Khayri A. M. Ali,et al.  The Muse Or-Parallel Prolog Model and its Performance , 1990, NACLP.

[13]  Mats Carlsson,et al.  Interfacing Engines and Schedulers in OR-Parallel Prolog Systems , 1991, PARLE.

[14]  Khayri A. M. Ali,et al.  Scheduling Or-Parallelism in Muse , 1991, ICLP.

[15]  W. F. Clocksin,et al.  Principles of the DelPhi Parallel Inference Machine , 1987, Comput. J..

[16]  Bogumil Hausman Handling Speculative Work in OR-Parallel Prolog: Evaluation Results , 1990, NACLP.

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

[18]  Ehud Shapiro An OR-Parallel Execution Algorithm for PROLOG and Its FCP Implementation , 1987, ICLP.

[19]  Khayri A. M. Ali OR-Parallel Execution of Prolog on BC-Machine , 1988, ICLP/SLP.

[20]  Scheduling Strategies and Speculative Work , 1991, ICLP Workshop on Parallel Execution of Logic Programs.

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

[22]  Kotagiri Ramamohanarao,et al.  A Stream AND-Parallel Execution Algorithm with Backtracking , 1988, ICLP/SLP.

[23]  Ewing L. Lusk,et al.  Experiments with OR-Parallel Logic Programs , 1987, ICLP.

[24]  B. Ramkumar,et al.  Machine Independent AND and OR Parallel Execution of Logic Programs: Part II-Compiled Execution , 1994, IEEE Trans. Parallel Distributed Syst..

[25]  Shyam Mudambi Performances of Aurora on NUMA Machines , 1991, ICLP.

[26]  Manuel V. Hermenegildo,et al.  Combined Determination of Sharing and Freeness of Program Variables through Abstract Interpretation , 1991, ICLP.

[27]  Peter Van Roy,et al.  Can Logic Programming Execute as Fast as Imperative Programming? , 1990 .

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

[29]  Lee Naish Parallelizing NU-Prolog , 1988, ICLP/SLP.

[30]  Khayri A. M. Ali,et al.  Performance of Muse on the BBN Butterfly TC2000 , 1991, PARLE.

[31]  David Chan,et al.  SEPIA - An Extendible Prolog System , 1989, IFIP Congress.

[32]  Rong Yang,et al.  IDIOM: Integrating Dependent And-, Independent And-, and Or-parallelism , 1991, ISLP.

[33]  Manuel V. Hermenegildo,et al.  The DCG, UDG, and MEL Methods for Automatic Compile-time Parallelization of Logic Programs for Independent And-parallelism , 1990, ICLP.

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

[35]  Laxmikant V. Kalé,et al.  A Memory Organization Independent Binding Environment for AND and OR Parallel Execution of Logic Programs , 1988, ICLP/SLP.

[36]  Ehud Shapiro,et al.  Concurrent PROLOG: Collected Papers , 1987 .

[37]  Leon Sterling,et al.  The Art of Prolog , 1987, IEEE Expert.

[38]  Roland Karlsson,et al.  How build your own OR-parallel Prolog System , 1992 .

[39]  Ken Satoh,et al.  A new parallel inference mechanism based on sequential processing , 1986 .

[40]  Roland Karlsson,et al.  The Engine-Scheduler Interface used in the Muse OR-parallel Prolog System , 1992 .

[41]  Laxmikant V. Kalé,et al.  The Reduce-Or Process Model for Parallel Execution of Logic Programs , 1991, J. Log. Program..

[42]  Rong Yang,et al.  Andorra I: a parallel Prolog system that transparently exploits both And-and or-parallelism , 1991, PPOPP '91.

[43]  Steve Gregory,et al.  Parallel logic programming in parlo9 , 1987 .

[44]  Seif Haridi,et al.  ANDORRA Prolog - An Integration of Prolog and Committed Choice Languages , 1988, FGCS.

[45]  Manuel V. Hermenegildo,et al.  An Abstract Machine for Restricted AND-Parallel Execution of Logic Programs , 1986, ICLP.

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

[47]  Seif Haridi,et al.  Kernel Andorra Prolog and its Computation Model , 1990, ICLP.

[48]  Mats Carlsson,et al.  Garbarge collection for Prolog based on WAM , 1988, CACM.

[49]  David Y. Y. Yun,et al.  A Scalable Abstract Machine Model to Support Limited-OR (LOR) / Restricted-AND Parallelism (RAP) in Logic Programs , 1988, ICLP/SLP.

[50]  Hans A. Hansson Time and probability in formal design of distributed systems , 1991, DoCS.

[51]  Andrew Taylor,et al.  High Performance Prolog Implementation , 1991 .

[52]  David H. D. Warren,et al.  The SRI Model for Or-Parallel Execution of Prolog: Abstract Design and Implementation Issues , 1987, SLP.

[53]  Gopal Gupta,et al.  On Criteria for Or-Parallel Execution Models of Logic Programs , 1990, NACLP.

[54]  Andrzej Ciepielewski,et al.  Cut and Side-Effects in Or-Parallel Prolog , 1988, FGCS.

[55]  Robert A. Kowalski,et al.  Logic for problem solving , 1982, The computer science library : Artificial intelligence series.

[56]  Khayri A. M. Ali A Method for Implementing Cut in Parallel Execution of Prolog , 1987, SLP.

[57]  Philippe Robert,et al.  The Parallel ECRC Prolog System PEPSys: An Overview and Evaluation Results , 1988, FGCS.

[58]  Peter Van Roy,et al.  High-performance logic programming with the Aquarius Prolog compiler , 1992, Computer.

[59]  Khayri A. M. Ali,et al.  The MUSE Parallel Prolog System , 1990, Dagstuhl Seminar on Parallelization in Inference Systems.

[60]  Manuel V. Hermenegildo,et al.  &-Prolog and its Performance: Exploiting Independent And-Parallelism , 1990, ICLP.

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

[62]  Vipin Kumar,et al.  AND-Parallel Execution of Logic Programs on a Shared-Memory Multiprocessor , 1988, J. Log. Program..