On applying or-parallelism and tabling to logic programs

  title={On applying or-parallelism and tabling to logic programs},
  author={Ricardo Rocha and Fernando M A Silva and V{\'i}tor Santos Costa},
  journal={Theory and Practice of Logic Programming},
  pages={161 - 205}
Logic programming languages, such as Prolog, provide a high-level, declarative approach to programming. Logic Programming offers great potential for implicit parallelism, thus allowing parallel systems to often reduce a program's execution time without programmer intervention. We believe that for complex applications that take several hours, if not days, to return an answer, even limited speedups from parallel execution can directly translate to very significant productivity gains. It has been… 

High-Level Constructors for Solution Searching in Or-Parallel Prolog Systems

The strategies proposed in this work have a very important concept at the core: make relatively small changes to the YAP’s engine codebase in order to allow them to be easily ported to other implementations of Prolog, and make them available to the user, by using high-level constructors that transparently increase the speedups obtained without forcing the user to make complex source code changes.

A simple and efficient explicit parallelization of logic programs using low-level threading primitives

The implementation of the parent-children shared answer-tables surpasses in efficiency all the other data-structures currently implemented for completion of answers in parallelization using multi-threading.

On Supporting Parallelism in a Logic Programming System

This work proposes some principles from the experience with previous work in Parallel Logic Programming, discusses how much a Prolog system needs to be adapted to support these principles, and presents an application.

Theory and Practice of Logic Programming

This work revive and redesigns the YapOr system to exploit or-parallelism based on a multi-threaded implementation and takes full advantage of the state-of-the-art fast and optimized YAP Prolog engine and shares the underlying execution environment, scheduler and most of the data structures used to support Yap or’s model.

On Applying Linear Tabling to Logic Programs

  • M. Jo
  • Computer Science
  • 2010
A new strategy is proposed, named DRS, and a framework is presented, on top of the Yap system, that supports the combination of all these three linear tabling strategies, and confirmed that suspension-based mechanisms have, in general, better performance thanlinear tabling and that the difference between both mechanisms can be highly reduced by using the correct combination of linear tabing strategies.

Thread-Aware Logic Programming for Data-Driven Parallel Programs

A novel programming model that allows the programmer to reason about thread state in data-driven declarative programs and is implemented on top of Linear Meld, a linear logic programming language that is designed for writing graphbased programs.

Table space designs for implicit and explicit concurrent tabled evaluation

Yap's main contributions to concurrent tabled evaluation are summarized and the design and implementation challenges of several alternative table space designs for implicit and explicit concurrent tables evaluation that represent different trade-offs between concurrency and memory usage are described.

Extending Tabled Logic Programming with Multi-Threading : A Systems Perspective

The approach to MT-TLP taken by XSB Prolog, a leading open-source Prolog whose tabling engine has recently been extended for multi-threading, is presented, which supports a wide variety of TLP features, including tabled negation, tabled constraints, call subsumption, answer subsumption and incremental recomputation.

Fast, effective program analysis for object-level parallelism

This dissertation shows that real-world client applications exhibit implicit thread-level parallelism because methods on distinct objects are often independent, and shows that it is possible to identify this object- level parallelism statically via efficient, novel type-based program analyses to identify methods that are good candidates for safe parallel execution.

IMPACT: Innovative Models for Prolog with Advanced Control and Tabling

The power of tabling is combined with that of EAM in order to produce an execution model with advanced control strategies that guarantees termination, avoids looping, reduces the search space, and is less sensitive to goal ordering.



Can Logic Programming Execute as Fast as Imperative Programming?

The purpose of this dissertation is to provide constructive proof that the logic programming language Prolog can be implemented an order of magnitude more efficiently than the best previous systems,

Parallel execution of prolog programs: a survey

The article describes the major techniques used for shared memory implementation of Or-par parallelism, And-parallelism, and combinations of the two and explores some related issues, such as memory management, compile-time analysis, and execution visualization.

ACE: And/Or-parallel Copying-based Execution of Logic Programs

This paper presents a novel execution model for parallel implementation of logic programs which is capable of exploiting both independent and-parallelism and or-par parallelism in an efficient way and which combines the stack copying approach in the implementation of or- parallelism with proven techniques in the Implementation ofIndependent and-Parallelism, such as those used in &-Prolog.

Novel Models for Or-Parallel Logic Programs: A Performance Analysis

This paper based its work on YapOr, an or-parallel copying system using the YAP Prolog engine, so that the three alternative systems share schedulers and the underlying engine.

On a Tabling Engine That Can Exploit Or-Parallelism

It is demonstrated that the mechanisms proposed to parallelize search in the context of SLD resolution naturally generalize to parallel tabled tabledcomputations, and that resulting systems can achieve good performance on multi-processors.

Efficient evaluation of normal logic programs

This thesis explores how to efficiently implement the SLG-WAM, an engine which evaluates SLG for stationary stratified programs, and integrates SLG with full Prolog functionality, including the cut, findall, and meta-predicates.

A High Performance OR-parallel Prolog System

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 and implemented.

YapOr: an Or-Parallel Prolog System Based on Environment Copying

An initial evaluation of YapOr performance showed that it achieves very good performance on a large set of benchmark programs, and compares favorably with a mature parallel Prolog system such as Muse, both in terms of base speed and in Terms of speedups.

An abstract machine based execution model for computer architecture design and efficient implementation of logic programs in parallel.

This dissertation presents an efficient parallel execution model for logic programs capable of retaining sequential execution speed similar to that of high performance sequential systems, while extracting additional gains in speed by efficiently implementing parallel execution.

Andorra I: a parallel Prolog system that transparently exploits both And-and or-parallelism

This work gives an overview of the main problems in the implementation of Andorra-I: the design of its engine and of the preprocessor that generates code to recognise determinate goals, and presents performance data for the implementation.