We present efficient support schemes for generalized arrays of
parallel data driven objects. The "array elements" are scattered
across a parallel machine. Each array element is an object that can
be thought of as a virtual processor. The individual elements are
addressed by their "index", which can be an arbitrary object rather
than a simple integer. For example, it can be a series of numbers,
supporting multidimensional sparse arrays; a bit vector, supporting
collections of quadtree nodes; or a string. Messages can be sent to
any individual array element from any processor, and the elements
can participate in reductions and broadcasts. Individual elements
can be created or deleted dynamically at any time. More
importantly, the elements can migrate from processor to processor
at any time. The paper discusses support for message delivery and
collective operations in face of such dynamic behavior. The
migration capabilities of array elements have proved to be
extremely useful, for example, in implementing flexible load
balancing strategies and for exploiting workstation clusters
adaptively.