A Team-Based Scheduling Model for Interfacing Or-Parallel Prolog Engines

João Santos and Ricardo Rocha

October 2014


Abstract

Logic Programming languages, such as Prolog, offer a great potential for the exploitation of implicit parallelism. One of the most noticeable sources of implicit parallelism in Prolog programs is or-parallelism. Or-parallelism arises from the simultaneous evaluation of a subgoal call against the clauses that match that call. Nowadays, multicores and clusters of multicores are becoming the norm and, although, many parallel Prolog systems have been developed in the past, to the best of our knowledge, none of them was specially designed to explore the combination of shared and distributed memory architectures. Conceptually, an or-parallel Prolog system consists of two components: an or-parallel engine (i.e., a set of independent Prolog engines which we named a team of workers) and a scheduler. In this work, we propose a team-based scheduling model to efficiently exploit parallelism between different or-parallel engines running on top of clusters of multicores. Our proposal defines a layered approach where a second-level scheduler specifies a clean interface for scheduling work between the base or-parallel engines, thus enabling different scheduling combinations to be used for distributing work among workers inside a team and among teams.

Bibtex

@Article{santos-comsis14,
  author =    {J. Santos and R. Rocha},
  title =     {{A Team-Based Scheduling Model for Interfacing Or-Parallel Prolog Engines}},
  journal =   {Journal of Computer Science and Information Systems},
  pages =     {1435--1454},
  volume =    {11},
  number =    {4},
  month =     {October},
  year =      {2014},
}

Download Paper

PDF file
Computer Science and Information Systems