Or-Parallel Prolog Execution on Multicores Based on Stack Splitting
Rui Vieira
November 2011
Abstract
Prolog is a popular logic programming language that provides a
declarative approach to programming, being thus highly amenable for
implicit parallelism. There are many efficient sequential
implementations of Prolog, mostly based on the Warren Abstract Machine
(WAM). Prolog is currently much used by machine learning and natural
language practitioners, but its applicability is much wider in scope.
Implicit parallel implementations of Prolog have been proposed in the
past. The Muse and YapOr systems are arguably two of the most
efficient systems for shared memory architectures, both based on the
environment copying model. Stack splitting emerged as an alternative
model specially geared to distributed shared memory architectures as
it basically splits the computation in such a way that no further, or
just minimal, synchronization is required.
With the new multicore architectures, it just makes sense to recover
the body of knowledge there is in this area and either devise newer
computational models that fit best recent parallel architectures, or
to reengineer prior computational models to evaluate their performance
on newer architectures. Here, we take the second path.
In this thesis, we focus on the design and implementation of the stack
splitting strategy in the YapOr system. Our aim is to take advantage
of its robustness to efficiently implement stack splitting support
using shared memory, and then be able to directly compare the YapOr
based on environment copying with the YapOr based on stack
splitting. We devised two splitting schemes, the vertical splitting
and the half splitting, and have adapted data structures, scheduling
and incremental copying procedures in YapOr to cope with the new
schemes. Finally, we evaluate their performance on a set of known
benchmarks on a multicore machine with up to 24 cores. Our initial
results confirm that YapOr with the stack splitting schemes is, in
general, comparable to YapOr with environment copying, obtaining in
some cases better performance than with environment copying.
Bibtex
@MastersThesis{vieira-msc,
author = {R. Vieira},
title = {{Or-Parallel Prolog Execution on Multicores Based on Stack Splitting}},
school = {University of Porto},
address = {Portugal},
month = {November},
year = {2011},
type = {{MSc Thesis}},
}
Download Thesis
PDF file