This article has multiple issues. Please helpimprove it or discuss these issues on thetalk page.(Learn how and when to remove these messages) (Learn how and when to remove this message)
|
| Unified Parallel C (UPC) | |
|---|---|
| Paradigm | parallel,message passing,imperative (procedural),structured |
| Designed by | UPC Consortium |
| Stable release | 2022.10.0/October 28, 2022 (2022-10-28) |
| Typing discipline | static,weak,manifest |
| OS | Cross-platform |
| Website | upc-lang |
| Majorimplementations | |
| Clang UPC,GNU UPC,IBM XL UPC Compilers,HP UPC,Berkeley UPC,Michigan Tech MuPC, Cray UPC | |
| Influenced by | |
| C, AC,Split-C, Parallel C Preprocessor | |
Unified Parallel C (UPC) is an extension of theC programming language designed forhigh-performance computing on large-scaleparallel machines, including those with a common globaladdress space (SMP andNUMA) and those withdistributed memory (e.g.clusters). Theprogrammer is presented with a singlepartitioned global address space, where shared variables may be directly read and written by anyprocessor, but each variable is physically associated with a single processor. UPC uses asingle program, multiple data (SPMD) model of computation in which the amount of parallelism is fixed at program startup time, typically with a singlethread of execution per processor.
In order to express parallelism, UPC extendsISO C 99 with the following constructs:
shared storage qualifier) with thread-local parts (normal variables)upc_memputThe UPC language evolved from experiences with three other earlier languages that proposed parallel extensions to ISO C 99: AC,Split-C, and Parallel C preprocessor (PCP). UPC is not asuperset of these three languages, but rather an attempt to distill the best characteristics of each. UPC combines the programmability advantages of the shared memory programming paradigm and the control over data layout and performance of themessage passingprogramming paradigm.