The design and evaluation of an efficient shared memory system for distributed memory machines
Daniel J. Scales · 1996
Distributed memory multiprocessors and clusters of workstations connected by high speed networks are promising parallel platforms for executing computationally-intensive applications at much higher rates than current uniprocessors. Because these kinds of platforms do not provide hardware support for a shared address space, they are most often programmed using message-passing primitives. Existing message-passing libraries support an efficient communication model, but provide a low-level interface that is difficult to use for programming applications with complex communication patterns. Systems that provide support for a shared address space in software ease the development of parallel applications on distributed memory machines, but can cause a variety of extra communication that leads to poor performance. We have developed a system called SAM that simplifies programming by providing a shared name space in software and incorporates a novel design intended to tolerate the high communication costs typically associated with distributed memory environments. Our system supports a global name space for accessing shared data objects and automatic caching of shared data. The basic approach in SAM is to require the programmer to designate the way in which data will be accessed, thus allowing communication for synchronization and data access to be combined. To further ease the programming of applications on networks of workstations, we have also developed a method for automatically recovering from workstation failures during the execution of a SAM application. In this thesis, we describe the design of our system and detail the consequences of that design. We describe our experience with programming a number of complex scientific applications using SAM, give performance results on a number of platforms (including workstations connected by an ATM network), and analyze the effectiveness of the various mechanisms in SAM for tolerating communication overhead. We achieve impressive performance on these difficult applications and find that the SAM design is successful in supporting a shared memory programming model, while minimizing excess communication. We also describe our method for providing fault tolerance for SAM applications running on networks of workstations. Our method successfully recovers from workstation failures and has acceptable overhead when used to provide fault tolerance for several long-running applications.