Programming Techniques for Efficiently Exploiting Parallelism in Logic Programming Languages
Abstract
Granularity collecting (e.g., in OR-parallel Prolog) and removal of synchronization points (e.g., in AND-parallel committed-choice languages), are in general useful techniques for speeding up parallel logic programs. In this paper we explain these techniques with a unifying example: the Semigroup Problem, the calculation of the members of a semigroup given an initial set of generators. Performance measurements on a Sequent Symmetry multiprocessor are presented as evidence of the utility of the paradigms.