High-Level Constructors for Solution Searching in Or-Parallel Prolog Systems

João silva

December 2014


This aim of this work is to design and implement strategies that can improve the performance of logic programs when searching for particular solutions in an Or-Parallel Prolog system. Prolog is a first-order logic predicate language that belongs to the declarative family of programming languages, emphasizing data declaration and use. Or-Parallelism is a form of implicit parallelism that can be applied to Prolog programs, in order to allow the parallel execution of several clauses that match a Prolog goal.
With the availability of specific strategies that can improve the system's performance when searching for solutions in parallel, we expect to: (i) allow for long-running programs, such as those used for simulations, to take less time to execute; (ii) make it possible to execute new programs that deal with larger amounts of data, that would otherwise be too slow to run; (iii) generate more interest in Prolog, which might lead to further research. In particular, our implementation was done on top of the YAP, a well-known and established system which makes it possible for users to get all of these benefits.
The strategies proposed in this work have a very important concept at the core: make relatively small changes to the YAP's engine codebase in order to allow them to be easily ported to other implementations of Prolog, and make them available to the user, by using high-level constructors that transparently increase the speedups obtained without forcing the user to make complex source code changes.


  author =  {J. Silva},
  title =   {{High-Level Constructors for Solution Searching in Or-Parallel Prolog Systems}},
  school =  {University of Porto},
  address = {Portugal},
  month =   {December},
  year =    {2014},
  type =    {{MSc Thesis}},

Download Thesis

PDF file