Monday, Full Day
Title: Programming with the Distributed Shared-Memory Model
Presenters: William Carlson, IDA Center for Computing Sciences; Tarek El-Ghazawi, The George Washington University; Bob Numrich, Cray Inc.; Kathy Yelick, University of California at Berkeley
Level: 30% Beginner | 50% Intermediate | 20% Advanced
The distributed shared-memory programming paradigm has been receiving rising attention. Recent developments have resulted in viable distributed shared memory languages that are gaining vendors support, and several early compilers have been developed. This programming model has the potential of achieving a balance between ease-of-programming and performance. As in the shared-memory model, programmers need not to explicitly specify data accesses. Meanwhile, programmers can exploit data locality using a model that enables the placement of data close to the threads that process them, to reduce remote memory accesses.
In this tutorial, we present the fundamental concepts associated with this programming model. These include execution models, synchronization, workload distribution, and memory consistency. We then introduce the syntax and semantics of three parallel programming language instances with growing interest. These are the Unified Parallel C or UPC, a parallel extension to ANSI C which is developed by a consortium of academia, industry, and government; Co-Array FORTRAN, which is developed at Cray; and Titanium, a JAVA implementation from UCB. It will be shown through experimental case studies that optimized distributed shared memory programs can be competitive with message passing codes, without significant departure from the ease of programming of the shared memory model.