High performance execution of Prolog programs based on a Static Data Dependency Analysis
Prolog programs are executed from left-to-right and top-to-bottom with backtracking to the most recently activated choice-point when a failure occurs. This execution strategy is based on a sequential execution model and has been implemented with most efficiency in conventional computer systems. In this thesis, two ways are explored to improve the performance of a Prolog system. The first way is a more intelligent form of backtracking. The second way is to exploit AND-parallel execution. Both intelligent backtracking and AND-parallel execution require information about the dependency between body literals. This information can be derived either at compile time by using a static analysis or at run-time. A methodology for a Static Data Dependency Analysis (SDDA) was developed. The SDDA is based on a worst-case analysis of variable bindings. To perform the SDDA, only one declaration, which describes the worst-case activation, is necessary for each procedure which can be directly invoked from the top level query. A scheme for compiling intelligent backtracking based on the SDDA was designed. To take full advantage of dependency graphs, three different types of backtracking are differentiated. A scheme to exploit AND-parallelism is also proposed. It includes generating parallel executable tasks by the SDDA, using a set of message protocols to coordinate co-operating processes, exploiting both intelligent backtracking and parallel backtracking.
- Research Organization:
- California Univ., Berkeley (USA)
- OSTI ID:
- 7011409
- Resource Relation:
- Other Information: Thesis (Ph. D.)
- Country of Publication:
- United States
- Language:
- English
Similar Records
A parallel execution model for Prolog
A join algorithm for combining AND parallel solutions in AND/OR parallel systems