Table Space Designs For Implicit and Explicit Concurrent Tabled Evaluation

06/01/2018
by   Miguel Areias, et al.
0

One of the main advantages of Prolog is its potential for the implicit exploitation of parallelism and, as a high-level language, Prolog is also often used as a means to explicitly control concurrent tasks. Tabling is a powerful implementation technique that overcomes some limitations of traditional Prolog systems in dealing with recursion and redundant sub-computations. Given these advantages, the question that arises is if tabling has also the potential for the exploitation of concurrency/parallelism. On one hand, tabling still exploits a search space as traditional Prolog but, on the other hand, the concurrent model of tabling is necessarily far more complex since it also introduces concurrency on the access to the tables. In this paper, we summarize Yap's main contributions to concurrent tabled evaluation and we describe the design and implementation challenges of several alternative table space designs for implicit and explicit concurrent tabled evaluation which represent different trade-offs between concurrency and memory usage. We also motivate for the advantages of using fixed-size and lock-free data structures, elaborate on the key role that the engine's memory allocator plays on such environments, and discuss how Yap's mode-directed tabling support can be extended to concurrent evaluation. Finally, we present our future perspectives towards an efficient and novel concurrent framework which integrates both implicit and explicit concurrent tabled evaluation in a single Prolog engine. Under consideration in Theory and Practice of Logic Programming (TPLP).

READ FULL TEXT
research
03/16/2020

Adapting Persistent Data Structures for Concurrency and Speculation

This work unifies insights from the systems and functional programming c...
research
12/27/2022

Practically and Theoretically Efficient Garbage Collection for Multiversioning

Multiversioning is widely used in databases, transactional memory, and c...
research
08/03/2020

The Splay-List: A Distribution-Adaptive Concurrent Skip-List

The design and implementation of efficient concurrent data structures ha...
research
10/23/2018

Refining Santa: An Exercise in Efficient Synchronization

The Santa Claus Problem is an intricate exercise for concurrent programm...
research
10/31/2018

A Concurrent Unbounded Wait-Free Graph

In this paper, we propose a concurrent non-blocking unbounded directed g...
research
05/29/2023

Trace models of concurrent valuation algebras

This paper introduces Concurrent Valuation Algebras (CVAs), extending or...
research
09/12/2021

Verifying Concurrent Multicopy Search Structures

Multicopy search structures such as log-structured merge (LSM) trees are...

Please sign up or login with your details

Forgot password? Click here to reset