Tabled evaluation with delaying for general logic programs
Journal of the ACM (JACM)
An abstract machine for tabled execution of fixed-order stratified logic programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
Exploiting Parallelism in Tabled Evaluations
PLILPS '95 Proceedings of the 7th International Symposium on Programming Languages: Implementations, Logics and Programs
Beyond Depth-First: Improving Tabled Logic Programs through Alternative Scheduling Strategies
PLILP '96 Proceedings of the 8th International Symposium on Programming Languages: Implementations, Logics, and Programs
On applying or-parallelism and tabling to logic programs
Theory and Practice of Logic Programming
Concurrent and Local Evaluation of Normal Programs
ICLP '08 Proceedings of the 24th International Conference on Logic Programming
OpenRuleBench: an analysis of the performance of rule engines
Proceedings of the 18th international conference on World wide web
A simple and efficient implementation of concurrent local tabling
PADL'10 Proceedings of the 12th international conference on Practical Aspects of Declarative Languages
Xsb: Extending prolog with tabled logic programming
Theory and Practice of Logic Programming - Prolog Systems
Hi-index | 0.00 |
Multi-threading is currently supported by several well-known Prolog systems providing a highly portable solution for applications that can benefit from concurrency. When multi-threading is combined with tabling, we can exploit the power of higher procedural control and declarative semantics. However, despite the availability of both threads and tabling in some Prolog systems, the implementation of these two features implies complex ties to each other and to the underlying engine. Until now, XSB was the only Prolog system combining multi-threading with tabling. In XSB, tables may be either private or shared between threads. While thread-private tables are easier to implement, shared tables have all the associated issues of locking, synchronization and potential deadlocks. In this paper, we propose an alternative view to XSB's approach. In our proposal, each thread views its tables as private but, at the engine level, we use a common table space where tables are shared among all threads. We present three designs for our common table space approach: No-Sharing (NS) (similar to XSB's private tables), Subgoal-Sharing (SS) and Full-Sharing (FS). The primary goal of this work was to reduce the memory usage for the table space but, our experimental results, using the YapTab tabling system with a local evaluation strategy, show that we can also achieve significant reductions on running time.