157 research outputs found
On applying Or-Parallelism and Tabling to logic programs
Dissertação de Doutoramento em Ciência de Computadores apresentada à Faculdade de Ciências da Universidade do Port
On a Tabling Engine That Can Exploit Or-Parallelism
Abstract. Tabling is an implementation technique that improves the declarativeness and expressiveness of Prolog by reusing solutions to goals. Quite a few interesting applications of tabling have been developed in the last few years, and several are by nature non-deterministic. This raises the question of whether parallel search techniques can be used to improve the performance of tabled applications. In this work we demonstrate that the mechanisms proposed to parallelize search in the context of SLD resolution naturally generalize to parallel tabled computations, and that resulting systems can achieve good per-formance on multi-processors. To do so, we present the OPTYap par-allel engine. In our system individual SLG engines communicate data through stack copying. Completion is detected through a novel parallel completion algorithm that builds upon the data structures proposed for or-parallelism. Scheduling is simplified by building on previous research on or-parallelism. We show initial performance results for our implemen-tation. Our best result is for an actual application, model checking, where we obtain linear speedups
Beyond depth-first: improving tabled logic programs through alternative scheduling strategies
Journal ArticleTabled evaluations ensure termination of logic programs with fi nite models by keeping track of which subgoals have been called Given several variant subgoals in an evaluation, only the fi rst one encountered will use program clause resolution the rest uses answer resolution This use of answer resolution prevents infi nite looping which happens in SLD Given the asynchronicity of answer generation and answer return, tabling systems face an important scheduling choice not present in traditional top-down evaluation How does the order of returning answers to consuming subgoals affect program efficiency This paper investigates alternate scheduling strategies for tabling in a WAM implementation, the SLG-WAM. The original SLG-WAM had a simple mechanism of scheduling answers to be returned to callers which was expensive in terms of trailing and choice point creation We propose here a more sophisticated scheduling strategy, Batched Scheduling, which reduces the overheads of these operations and provides dramatic space reduction as well as speedups for many programs We also propose a second strategy, Local Scheduling, which has applications to non-monotonic reasoning and when combined with answer subsumption can improve the performance of some programs by arbitrary amounts
Algorithms and Implementation
In the past few years Tabling has emerged as a powerful logic programming model.
The integration of concurrent features into the implementation of Tabling systems is
demanded by need to use recently developed tabling applications within distributed
systems, where a process has to respond concurrently to several requests. The support
for sharing of tables among the concurrent threads of a Tabling process is a desirable
feature, to allow one of Tabling’s virtues, the re-use of computations by other threads
and to allow efficient usage of available memory. However, the incremental completion
of tables which are evaluated concurrently is not a trivial problem.
In this dissertation we describe the integration of concurrency mechanisms, by the
way of multi-threading, in a state of the art Tabling and Prolog system, XSB. We begin
by reviewing the main concepts for a formal description of tabled computations,
called SLG resolution and for the implementation of Tabling under the SLG-WAM, the
abstract machine supported by XSB. We describe the different scheduling strategies
provided by XSB and introduce some new properties of local scheduling, a scheduling
strategy for SLG resolution.
We proceed to describe our implementation work by describing the process of integrating
multi-threading in a Prolog system supporting Tabling, without addressing
the problem of shared tables. We describe the trade-offs and implementation decisions
involved.
We then describe an optimistic algorithm for the concurrent sharing of completed
tables, Shared Completed Tables, which allows the sharing of tables without incurring
in deadlocks, under local scheduling. This method relies on the execution properties
of local scheduling and includes full support for negation. We provide a theoretical
framework and discuss the implementation’s correctness and complexity.
After that, we describe amethod for the sharing of tables among threads that allows
parallelism in the computation of inter-dependent subgoals, which we name Concurrent
Completion. We informally argue for the correctness of Concurrent Completion.
We give detailed performance measurements of the multi-threaded XSB systems
over a variety of machines and operating systems, for both the Shared Completed Tables
and the Concurrent Completion implementations. We focus our measurements inthe overhead over the sequential engine and the scalability of the system.
We finish with a comparison of XSB with other multi-threaded Prolog systems and we compare our approach to concurrent tabling with parallel and distributed methods for the evaluation of tabling. Finally, we identify future research directions
VisTrails: enabling interactive multiple-view visualizations
Journal ArticleVisTrails is a new system that enables interactive multiple-view visualizations by simplifying the creation and maintenance of visualization pipelines, and by optimizing their execution. It provides a general infrastructure that can be combined with existing visualization systems and libraries. A key component of VisTrails is the visualization trail (vistrail), a formal specification of a pipeline. Unlike existing dataflow-based systems, in VisTrails there is a clear separation between the specification of a pipeline and its execution instances. This separation enables powerful scripting capabilities and provides a scalable mechanism for generating a large number of visualizations. VisTrails also leverages the vistrail specification to identify and avoid redundant operations. This optimization is especially useful while exploring multiple visualizations. When variations of the same pipeline need to be executed, substantial speedups can be obtained by caching the results of overlapping subsequences of the pipelines. In this paper, we describe the design and implementation of VisTrails, and show its effectiveness in different application scenarios
- …