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 parallel 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 intervention by the remote processor (as in the SGI/Cray T3D and T3E), UPC provides the programmer 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 message-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 implement an explicitly parallel C could use the syntax and semantics of UPC as a basis for a standard.
[1]
Leslie Lamport,et al.
How to Make a Multiprocessor Computer That Correctly Executes Multiprocess Programs
,
2016,
IEEE Transactions on Computers.
[2]
T. von Eicken,et al.
Parallel programming in Split-C
,
1993,
Supercomputing '93.
[3]
Andrea C. Arpaci-Dusseau,et al.
Parallel programming in Split-C
,
1993,
Supercomputing '93. Proceedings.
[4]
Jesse M. Draper,et al.
Distributed data access in AC
,
1995,
PPOPP '95.
[5]
Richard M. Stallman,et al.
Using and Porting GNU CC
,
1998
.