This preview has intentionally blurred sections. Sign up to view the full version.View Full Document
Unformatted text preview: Introduction to UPC and Language Specification 1 S-246, 187 Introduction to UPC and Language Specification William W. Carlson Jesse M. Draper IDA Center for Computing Sciences 1 David E. Culler Kathy Yelick University of California, Berkeley 2 Eugene Brooks Karen Warren Lawrence Livermore National Laboratory 3 CCS-TR-99-157 May 13, 1999 Second Printing Abstract UPC is a parallel extension of the C programming language intended for multiprocessors with a common global address space. A descendant of Split-C [CDG 93], AC [CaDr 95], and PCP [BrWa 95], UPC has two primary objectives: 1) to provide efficient access to the underlying machine, and 2) to establish a common syntax and semantics for explicitly paral- lel programming in C. The quest for high performance means in particular that UPC tries to minimize the overhead involved in communication among cooperating threads. When the underlying hardware enables a processor to read and write remote memory without inter- vention by the remote processor (as in the SGI/Cray T3D and T3E), UPC provides the pro- grammer with a direct and easy mapping from the language to low-level machine instructions. At the same time, UPC’s parallel features can be mapped onto existing mes- sage-passing software or onto physically shared memory to make its programs portable from one parallel architecture to another. As a consequence, vendors who wish to imple- ment an explicitly parallel C could use the syntax and semantics of UPC as a basis for a standard. 1. Center for Computing Sciences, 17100 Science Dr., Bowie, MD 20715 ([email protected], [email protected]). 2. Computer Science Division #1776, Soda Hall, University of California-Berkeley, Berkeley, CA 94720-1776 ([email protected], [email protected]) 3. Physics and Space Technology Division, Lawrence Livermore National Laboratory, L-45 LLNL, Livermore, CA 94550 ([email protected], [email protected]) Introduction to UPC and Language Specification 2 1 Introduction Even though latency and contention problems in large-scale multiprocessors have resulted in a general move away from uniform shared memory toward distributed memory, the shared-memory programming model retains many attractions for users of these systems. In particular, the ability to read and write remote memory with simple assign- ment statements is considerably more attractive than having to learn all the conventions of a message-passing library, even if the latter is portable. At the same time, the quest for performance often makes it desirable to view program data as distributed among a number of local memories. One of UPC’s chief advantages as a language is that it enables programmers to exploit data locality in a variety of memory architectures. UPC does not offer programmers a silver bullet for any parallel programming task. Instead, it assumes that the programmer must think about issues of memory locality in designing effective data structures and algorithms, and it offers the programmer a reasonable means of...
View Full Document
- Fall '07