next up previous contents
Next: And- Under Or-parallelism Up: Parallel Logic Programming Previous: Dependent And-parallelism:

Multiple Parallel Systems

One of the long time goals of the research in the area of exploitation of parallelism from logic programming languages is the development of a single, general framework in which different forms of parallelism can be concurrently extracted.

Systems taking advantage of either and- or or-parallelism in an efficient way have been developed and they are showing excellent results, both in terms of speed and speedups, on a large variety of programs. Nevertheless, as explained in various experimental works [96, 34]:

  1. many programs are quite rich in one of the two-forms of parallelism (either and- or or-parallelism). On the other hand neither of the two forms of parallelism seem to be prevalent on the other.
  2. most ``real-life'' applications seem to present both forms of parallelism, but neither are ubiquitous. Indeed, some applications do not have much of either parallelism in them.
These observations lead to a natural conclusion: there is the need of being able of supporting both forms of parallelism within the same framework. Given a system of this kind, we would be able to obtain speedups from programs that have scarce parallelism (by taking advantage of it as much as possible), and we would be able to obtain considerable improvements on any kind of program, independently from whether it is more and- or or-parallel oriented.

Exploiting concurrently both and- and or-parallelism can be visualized as the development of an and/or-tree, which can be simply described as a union of the notions of and-tree and or-tree, as described in a previous section of this document.


Various issues emerge when combination of different forms of parallelism is considered. In the rest of the section we will briefly analyze some of the possible choices and the consequent problems.

Tue Mar 19 14:37:09 MST 1996