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{}
for G a goal, and N a node number.
Conceptually, the meaning of a goal
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.