Distributed Shared-Memory Threads: DSM-Threads

This paper is, to our knowledge, the rst description of a system to support distributed threads on top of POSIX Threads (Pthreads) via distributed virtual shared memory (DSM). The aim of DSMThreads is to provide an easy way for a programmer to migrate from a concurrent programming model with shared memory (Pthreads) to a distributed model with minimal changes of the application code. Thus, a programmer may continue to use the shared-memory algorithms and exploit to processing power of a distributed system without dealing with the more complex (and harder to understand) models of distributed algorithms. This paper discusses design goals, design decisions, and implementation choices of DSM-Threads. As the DSM runtime system is itself implemented as a multi-threaded system over Pthreads on each node and copes without compiler or operating system modi cations, several problems arise and their solutions are discussed. Several data consistency models are supported to facilitate ports from Pthreads to DSM-Threads and address the requirements of advanced concepts for multiple writers. Heterogeneous systems are supported by handling di erent data representations at the communication level. Data and thread distribution are realized via a preprocessor based on trace data. The resulting system depends in large parts on POSIX 1003.1c (Threads) compliant operating systems and a set of Gnu tools, which enhances the portability of DSM-Threads.

[1]  Alan L. Cox,et al.  TreadMarks: shared memory computing on networks of workstations , 1996 .

[2]  Brian N. Bershad,et al.  The Midway distributed shared memory system , 1993, Digest of Papers. Compcon Spring.

[3]  Ian T. Foster,et al.  The Nexus Approach to Integrating Multithreading and Communication , 1996, J. Parallel Distributed Comput..

[4]  Frank Mueller,et al.  A Library Implementation of POSIX Threads under UNIX , 1993, USENIX Winter.

[5]  Paul Hudak,et al.  Memory coherence in shared virtual memory systems , 1986, PODC '86.

[6]  Virginia Mary Lo,et al.  Operating Systems Enhancements for Distributed Shared Memory , 1994, Adv. Comput..

[7]  Veljko M. Milutinovic,et al.  Distributed shared memory: concepts and systems , 1997, IEEE Parallel Distributed Technol. Syst. Appl..

[8]  Nicholas Carriero,et al.  Linda and Friends , 1986, Computer.

[9]  Frank Mueller Supporting Ada 95 Passive Partitions in a Distributed Environment , 1997, Ada-Europe.

[10]  Henri E. Bal,et al.  Distributed Programming with Shared Data , 1991, Comput. Lang..

[11]  Matthew Haines,et al.  On the design of Chant: a talking threads package , 1994, Proceedings of Supercomputing '94.

[12]  Willy Zwaenepoel,et al.  Implementation and performance of Munin , 1991, SOSP '91.

[13]  Gregory R. Andrews,et al.  Using Fine-Grain Threads and Run-Time Decision Making in Parallel Computing , 1996, J. Parallel Distributed Comput..

[14]  Bill Nitzberg,et al.  Distributed shared memory: a survey of issues and algorithms , 1991, Computer.

[15]  Edward Mascarenhas,et al.  Ariadne: Architecture of a Portable Threads System Supporting Thread Migration , 1996 .

[16]  Mohamed Naimi,et al.  A Log(N) Distributed Mutual Exclusion Algorithm Based on Path Reversal , 1996, J. Parallel Distributed Comput..