Theory and Practice of Logic Programming

Regular Papers

Threads and or-parallelism unified

VíTOR SANTOS COSTAa1, INÊS DUTRAa1 and RICARDO ROCHAa1*

a1 CRACS and INESC-Porto LA, Faculty of Sciences, University of Porto Rua do Campo Alegre, 1021/1055, 4169-007 Porto, Portugal (e-mail: vsc@dcc.fc.up.pt, ines@dcc.fc.up.pt, ricroc@dcc.fc.up.pt)

Abstract

One of the main advantages of Logic Programming (LP) is that it provides an excellent framework for the parallel execution of programs. In this work we investigate novel techniques to efficiently exploit parallelism from real-world applications in low cost multi-core architectures. To achieve these goals, we revive and redesign the YapOr system to exploit or-parallelism based on a multi-threaded implementation. Our new approach takes full advantage of the state-of-the-art fast and optimized YAP Prolog engine and shares the underlying execution environment, scheduler and most of the data structures used to support YapOr's model. Initial experiments with our new approach consistently achieve almost linear speedups for most of the applications, proving itself as a good alternative for exploiting implicit parallelism in the currently available low cost multi-core architectures.

(Received February 08 2010)

(Revised April 10 2010)

(Accepted May 13 2010)

KEYWORDS:

  • multi-threading;
  • or-parallelism;
  • implementation

Footnotes

* This work has been partially supported by the FCT research projects STAMPA (PTDC/EIA/67738/2006) and HORUS (PTDC/EIA-EIA/100897/2008).