A simple and efficient explicit parallelization of logic programs using low-level threading primitives
Diptikalyan Saha, Paul Fodor

TL;DR
This paper introduces an automatic, low-level threading-based method for parallelizing logic programs, significantly improving efficiency in merging answer-tables without heavy synchronization, specifically applied to XSB Prolog.
Contribution
It presents a novel transformation technique for parallelizing tabled logic programs using low-level threading primitives, enhancing answer-table merging efficiency in XSB Prolog.
Findings
Answer-table merging surpasses existing methods in efficiency.
The approach enables effective parallelization under well-founded semantics.
Implementation as an extension to XSB improves performance.
Abstract
In this work, we present an automatic way to parallelize logic programs for finding all the answers to queries using a transformation to low level threading primitives. Although much work has been done in parallelization of logic programming more than a decade ago (e.g., Aurora, Muse, YapOR), the current state of parallelizing logic programs is still very poor. This work presents a way for parallelism of tabled logic programs in XSB Prolog under the well founded semantics. An important contribution of this work relies in merging answer-tables from multiple children threads without incurring copying or full-sharing and synchronization of data-structures. 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. The transformation and its…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsParallel Computing and Optimization Techniques · Formal Methods in Verification · Logic, programming, and type systems
