IMPLEMENTATION OF CONCURRENT PROLOG USING MESSAGE PASSING

Date
1984-04-01
Journal Title
Journal ISSN
Volume Title
Publisher
Abstract
The design of a distributed Concurrent Prolog system is described. It is based on message passing between large processes which provide a coarse grained parallelism. The intended use of the system is in a distributed prototyping environment which supports many programming languages and allows distributed software to be developed on one system and later transported to another. The underlying message passing system used is simple and efficient and need make no provisions for buffering messages between processes. An algorithm is described for serialising variable bindings so they can be transmitted between processes. It permits free variables to be bound together and can correctly handle circular data structures. Each variable shared between processes is "located" on a single process which distributes its values whenever it is updated. This leads to an "eager" distribution system which sends updates to variables whenever they occur not when they are needed for further computation. Sometimes, as a result of garbage collection or as a result of unification of different shared variables it is necessary to relocate a variable. The mechanisms to do this are described. Some estimates of the efficiency of the system are obtained by counting the messages needed for a simple but representative program. The effects of various optimisations on the message passing protocol are also assessed.
Description
Keywords
Computer Science
Citation