Unified Parallel C
|Unified Parallel C (UPC)|
|Paradigms :||imperative , structured , parallel|
|Current version :||1.3 (November 2013)|
|Important implementations :||BUPC , GCC-UPC , IBM XL , HP , MuPC , Cray|
|Influenced by:||C , AC, Split-C, Parallel C Preprocessor|
|Operating system :||cross-platform|
Unified Parallel C ( UPC ) is a parallel extension of the C programming language for use in high-performance computers . The underlying programming model is SPMD and a partitioned global address space ( PGAS ) is used as the memory model.
The UPC language extensions were specified by the UPC Consortium in 1999. The goals in the development of UPC were to enable efficient access to the computing resources of a parallel computer and to establish a standard for explicit parallel programming in C. One of the main advantages of UPC is that the application programmer can control the distribution of the program data directly and thus data locality can be used on a large number of system architectures.
A UPC program is executed in parallel by several threads in a common global address space. The number of threads is specified either when compiling or when starting the UPC program and can be queried at runtime using the predefined constant THREADS. Each thread has its own address space, ie the UPC threads do not correspond to those of the Pthreads library .
The variables of a UPC program are private by default; H. each thread receives a copy of the variable that can be read and written separately from other threads. However, variables can also be declared as shared so that all threads can access the same variables together. Shared variables always have an affinity to a specific thread in whose address space they are stored. For shared arrays, a distribution of the field elements on the threads can be specified so that different field elements have an affinity to different threads.
- UPC Language Specifications V1.3 (PDF) - official standard (English)