Supporting Dynamic Parallel Object Arrays
Authors:
Orion Lawlor and L. V. Kale
Parallel Programming Laboratory, Department of Computer Science, University
of Illinois at Urbana-Champaign
Proceedings of the ACM 2001 Java Grande/ISCOPE Conference, Palo Alto, California, June 2001; Acm Press; pp. 21-28.
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.