Premium
Supporting dynamic parallel object arrays
Author(s) -
Lawlor Orion S.,
Kalé Laxmikant V.
Publication year - 2003
Publication title -
concurrency and computation: practice and experience
Language(s) - English
Resource type - Journals
SCImago Journal Rank - 0.309
H-Index - 67
eISSN - 1532-0634
pISSN - 1532-0626
DOI - 10.1002/cpe.665
Subject(s) - computer science , quadtree , bit array , object (grammar) , string (physics) , integer (computer science) , element (criminal law) , simple (philosophy) , parallel computing , workstation , construct (python library) , distributed computing , algorithm , artificial intelligence , programming language , operating system , engineering , philosophy , epistemology , law , political science , mechanical engineering , drilling , physics , quantum mechanics
We present efficient support for generalized arrays of parallel data driven objects. Array elements are regular C++ objects, and are scattered across the parallel machine. An individual element is addressed by its ‘index’, which can be an arbitrary object rather than a simple integer. For example, an array index can be a series of numbers, supporting multidimensional sparse arrays; a bit vector, supporting collections of quadtree nodes; or a string. Methods can be invoked on 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. Most importantly, the elements can migrate from processor to processor at any time. We discuss support for message delivery and collective operations in the face of such dynamic behavior. The migration capabilities of array elements have proven extremely useful, for example, in implementing flexible load balancing strategies and for exploiting workstation clusters adaptively. We present the design, an implementation, and performance results. Copyright © 2003 John Wiley & Sons, Ltd.