The shared-memory language pSather on a distributed-memory multiprocessor

Parallel Sather (abbreviated as pSather) [3] is a parallel extension of the object oriented language Sather. Sather [6] is a simplified, optimized variant of Eiffel [5]. Sather has a very simple syntax, offers parameterized classes, object-oriented dispatch, multiple inheritance and strong typing, pSather adds constructs to create asynchronously executed threads and a special H0~IITOR class that provides features for implementing synchronization mechanisms. One goal of pSather is to support shared-memory abstractions. Two implementations, one on a sharedmemory multiprocessor (Sequent Symmetry) and another on a uniprocessor (Sparc stations) have worked relatively well. We therefore began work on a distributed memory implementation (in particular for the CM5) to test the suitability of the language for distributed-memory systems and to discover parallel constructs which provide both ease of programming and good performance on a distr ibuted-memory machine. In the process of porting pSather to the CM-5, we extended the design of the pSather runtime support for distributed-memory machines. The compiler/runtime support provides a "global address space" so that the language continues to support a shared-memory model. Also required were new treatments of shared variables and of remote accesses, procedure and thread invocations and MONITOR operations. The design for the runtime system is complete and a preliminary version of pSather is running on the CM-5. This abstract describes the experience in the design and implementation of the runtime system. We are implementing several medium-sized applications in pSather on CM-5. The emphasis is on providing support for the full range of data structures and exploiting this in challenging applications. We now also have designed further language constructs which are useful for programming in a non-uniform shared memory model. Language design, however, is not the focus of this abstract.