Managing active object scalability on distributed memory : with a case study in parallel VRML
The de-facto standard for programming distributed memory parallel architectures are the PVM and MPI message passing libraries. While they are geared towards maximum efficiency, their low level of abstraction makes the programmer's task error-prone and reduces application portability. SODA is a novel programming model that presents a much higher level of abstraction and manages most low-level distribution and parallelism details implicitly. SODA is based on an extension of the active objects paradigm. This work is structured into two main parts. In the first part we present a novel data-flow synchronisation mechanism for active objects that increases ease-of-use, efficiency, liveliness and correctness compared to previous approaches. SODA active objects are the units of concurrency and distribution and they make the underlying parallelism largely implicit. Details, such as mapping, communication and decomposition are transparent. This reduces programming overheads and increases portability. SODA is supported by a source-to-source translator and a Java runtime library. A set of micro-benchmarks is used to evaluate efficiency trade-offs. The second part is a demonstration of SODA's benefits in the light of a complex, real-world application. It shows how SODA's active object concept can support object-oriented programming paradigms and therefore becomes a viable solution to large-scale real-world programs. Our example application is a parallel VRML execution engine implemented on top of SODA. We can observe a gain in productivity and programmability that outweighs the performance trade-off introduced by SOD's high level of abstraction. Beyond a proof-of-concept for SODA, the examination of potential parallelism in the VRML execution model is valuable in its own right. Since this is novel work, it is explored in mor detail than would have been reguired for a mere case study.