Bridging the gap between distributed shared memory and message passing

Holger Karl
1998 Concurrency Practice and Experience  
Using Java for high-performance distributed computing aggravates a well-known problem: the choice between efficient message passing environments and more convenient Distributed Shared Memory systems which often provide additional functionalities like adaptive parallelism or fault tolerance-with the latter being imperative for Web-based computing. This paper proposes an extension to the DSM-based Charlotte system that incorporates advantages from both approaches. Annotations are used to describe
more » ... the data dependencies of parallel routines. With this information, the runtime system can improve the communication efficiency while still guaranteeing the correctness of the shared memory semantics. If the correctness of these annotations can be relied upon, additional optimizations are possible, ultimately sharing primitive data types such as int across a network, making the overhead associated with accessing and sharing objects unnecessary. In this case, the annotations can be regarded as a compact representation of message passing semantics. Thus, a program's efficiency can be improved by a a step-by-step incorporation of semantic knowledge. The possibility to freely mix and to easily switch between unannotated code, annotated code and shared primitive data types entails a big flexibility for the programmer. A number of measurements show significant performance improvements for annotations and annotationbased shared primitive types.
doi:10.1002/(sici)1096-9128(199809/11)10:11/13<887::aid-cpe416>3.0.co;2-0 fatcat:loamnpquincbhfc7luftzqw6aa