Next: And- Under Or-parallelism
Up: Parallel Logic Programming
Previous: Dependent And-parallelism:
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]:
- 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.
- 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.
'Enrico
Tue Mar 19 14:37:09 MST 1996