Shared Memory Computing on Networks of SMPS
Parallel systems supporting a shared memory programming interface have been implemented both in software and hardware. Hardware shared memory systems are fast, but generally expensive. Software shared memory systems are cheaper but slower. A clustered software shared memory system on a network of symmetric multiprocessors (SMP) is a hybrid solution to implementing shared memory with good performance at a reasonable cost. Within one SMP node, the hardware supports fine grained cache-coherence without any software intervention. Across nodes, a shared memory abstraction is implemented in software. Such systems are cheaper than pure hardware shared memory machines and more efficient than pure software shared memory systems. We built a software distributed shared memory system for clusters of SMP machines and designed a unified fork-join programming model for our system. Our model allows users to take advantage of the physically shared memory within each SMP machine while preserving a uniform interface for both inter-node and intra-node parallelization. We also developed a front-end compiler that provides a loop annotation interface to the user and automatically generates parallel programs in the unified fork-join model. Applications written in our model have performance comparable with the handwritten code. Using the local hardware shared memory in our system results in better performance when comparing with pure software distributed shared memory system because of reduced inter-node communication.