CHIME: a versatile distributed parallel processing system
Shantanu Sardesai · 1997
Chime is a parallel processing system that provides true multiprocessor semantics, including a parallel programming interface targeted for multiprocessors, in an unreliable, asynchronous distributed environment. The language support provided by Chime includes parallel blocks, nested parallel blocks, global shared memory, scoping of local variables, non-isolated remote execution and support for language based synchronization variables. In addition, the runtime system provides an efficient implementation that supports fault tolerance and load balancing. The programming interface supported by Chime is the multiprocessor shared memory part of Compositional C++ (CC++) language definition, even though the target environment is distributed. Chime implements a multiprocessor programming environment on networked workstation by making distribution completely transparent. To the cleaner semantics of CC++ multiprocessor shared memory programming interface, we add Calypso style fault tolerance, and automatic load balancing, to yield a system that we believe, is superior to both. This approach allows CC++ multiprocessor constructs to work in a distributed environment. Chime actually makes a distributed system look like a multiprocessor. Unlike other DSM based system, the shared memory is not an add-on but an integral part of the system. Similarly, parallelism expressed in the language is mapped to the distributed hardware, automatically and transparently. Its handling of faults and management of machines with heterogeneous speeds is novel and consumes very little overhead. Some of the novel features added by Chime, include distributed cactus stacks, non-isolated remote execution, management of nested parallel blocks, thread synchronization and automatic data transfer in a distributed system.