Munin: distributed shared memory based on type-specific memory coherence
PPOPP '90 Proceedings of the second ACM SIGPLAN symposium on Principles & practice of parallel programming
Advanced C++ programming styles and idioms
Advanced C++ programming styles and idioms
Orca: A Language for Parallel Programming of Distributed Systems
IEEE Transactions on Software Engineering
The shared regions approach to software cache coherence on multiprocessors
PPOPP '93 Proceedings of the fourth ACM SIGPLAN symposium on Principles and practice of parallel programming
On the versatility of parallel sorting by regular sampling
Parallel Computing
Design patterns: elements of reusable object-oriented software
Design patterns: elements of reusable object-oriented software
Practical parallel programming
Practical parallel programming
Application-specific protocols for user-level shared memory
Proceedings of the 1994 ACM/IEEE conference on Supercomputing
Implementing optimized distributed data sharing using scoped behaviour and a class library
COOTS'97 Proceedings of the 3rd conference on USENIX Conference on Object-Oriented Technologies (COOTS) - Volume 3
ACM Transactions on Programming Languages and Systems (TOPLAS)
Hi-index | 0.00 |
Distributed-memory hardware platforms, such as a network of workstations, are attractive because of their ubiquitousness and good price-performance. However, there are high communications overheads associated with sharing data between distributed memories. While message-passing programming systems provide the greatest low-level flexibility to optimize the overheads, shared-data systems provide a higher level of abstraction. Ideally, users would like to have both a high level of abstraction and the flexibility to optimize a program for each data-sharing pattern and for each portion of the source code, such as a particular loop or phase. A novel technique to support this form of optimization flexibility is scoped behavior. In the Aurora distributed shared data system, the programmer instantiates shared-data objects and uses scoped behaviour to incrementally tune applications on a per-object and per-context basis. This article details how a class library implements shared-data objects as abstract data types and how scoped behaviour implements the optimizations within standard C++. Using a network of workstations connected by an ATM switch, the author shows that the performance of Aurora is comparable to message passing (using MPI) for three applications.