Distribution and allocation

\dlpindex{distribution} \dlpindex{allocation} In the examples given no attention has been paid to the issue of allocating objects and the actual distribution of computation over the available resources. When a new instance of a named object is created, it can be allocated on a particular processor node, by a statement of the form \dlpindex{O = new(name)@N} O = new(name)@N where N is the number of a processor node. This is similar to POOL. Also it is possible to split of a process to evaluate a goal on a particular node by the statement \dlpindex{G@N} G@N for G a goal, and N a node number. Conceptually, the meaning of a goal G@N is given by the clause G@N :- O = new(self)@N, Q = O!G, Q?. Since allocation is dependent on assumptions concerning the parallel machine on which the system is implemented these assumptions will be made explicit. The parallel processor for which the system is intended, is assumed to have a limited number (less than 100) of processor nodes that are connected with each other by a packet switching network, such that the distance between each node never exceeds a fixed number (3 or 4) of intermediate nodes. For reasons of optimal utilization such machines are considered to support coarse grain parallelism, which means that the ratio of communication and computation must be in favor of the latter.