Because CODE graphs are dynamic, instantiations of
graphs and computation nodes occur at runtime and it
is not known at compile-time how many objects will
be created: placement of these objects must be
managed at runtime.
2.3.1 Load Distribution at the Node Level
Vokkarne [11] describes an initial distributed version
of CODE which maps objects to processors after the
manner of the early versions of the widely used PVM
[6] distributed programming environment. We use
this mode of initial distribution as a basis for
discussion of the issues in partitioning graphs of
dynamic programs where the nodes may have
substantial data associated with them. Each object has
a path, defined as the list of graphs (with their indices)
which contain the object plus the object name and its
indices. The path sum is defined as the sum of the
indices along the path plus the unique identifiers of
every object. The object (i.e., execution and storage
associated with the object) is placed on processor
number (path sum/mod(N)), where N is the total
number of processors and processors are indexed {0
…N-1}. The algorithm we used is different in a small
but important way. The "path sum" is defined as the
product of the indices. This is important for
scalability since mod(N) of the original path sum will
generate substantial variations in workload for large
numbers of processors