YapOr: an Or-Parallel Prolog System based on Environment Copying

Ricardo Rocha, Fernando Silva and VĂ­tor Santos Costa

December 1997


Prolog compilers have proved to be highly efficient for standard sequential architectures. The efficiency of these implementations and the declarativeness of the Prolog language have kindled interest on implementations for parallel architectures. YapOr is an Or-parallel system that extends Yap's sequential execution model to exploit implicit or-parallelism in Prolog programs. YapOr is based on the environment copy model, as first implemented in Muse.
To develop YapOr, it was necessary to solve some important issues, such as the design of data structures to support parallel processing, the implementation of the incremental copying technique, the development of a memory organization able to answer with efficiency to parallel processing and to the incremental copying in particular, the implementation of the scheduling strategies, the design of an interface between the scheduler and the engine, the implementation of the sharing work process, and support for the cut builtin.
An initial evaluation of YapOr performance showed that it achieves very good performance on a large set of benchmark programs. Indeed, YapOr compares favorably with a mature parallel Prolog system such as Muse, both in terms of base speed and in terms of speedups.


  author =      {R. Rocha and F. Silva and V. Santos Costa},
  title =       {{YapOr: an Or-Parallel Prolog System based on Environment Copying}},
  institution = {DCC-FC \& LIACC, University of Porto},
  number =      {DCC-1997-14},
  month =       {December},
  year =        {1997},

Download Report

PDF file