Or-parallel prolog execution on multicores based on stack splitting

  • Authors:
  • Rui Vieira;Ricardo Rocha;Fernando Silva

  • Affiliations:
  • CRACS and INESC TEC, Faculty of Sciences, University of Porto, Porto, Portugal;CRACS and INESC TEC, Faculty of Sciences, University of Porto, Porto, Portugal;CRACS and INESC TEC, Faculty of Sciences, University of Porto, Porto, Portugal

  • Venue:
  • DAMP '12 Proceedings of the 7th workshop on Declarative aspects and applications of multicore programming
  • Year:
  • 2012

Quantified Score

Hi-index 0.00

Visualization

Abstract

Many or-parallel Prolog computational models exploiting implicit parallelism have been proposed in the past. The Muse and YapOr systems are arguably two of the most efficient systems exploiting or-parallelism on shared memory architectures, both based on the environment copying model. Stack splitting emerged as an alternative model specially geared to distributed 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 reengineer prior computational models to evaluate their performance on newer architectures. In this paper, we focus on the design and implementation of stack splitting 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 original YapOr with the YapOr using stack splitting. We consider two splitting models, vertical splitting and half splitting, and have adapted data structures, scheduling and incremental copy procedures in YapOr to cope with the new models. Experimental results, on a multicore machine with 24 cores, show that YapOr using stack splitting is, in general, comparable to the original YapOr, obtaining in some cases better performance than with only environment copying.