Unified Parallel C (UPC) is an extension of the
C programming language designed for
high-performance computing
High-performance computing (HPC) is the use of supercomputers and computer clusters to solve advanced computation problems.
Overview
HPC integrates systems administration (including network and security knowledge) and parallel programming into ...
on large-scale
parallel machines, including those with a common global
address space (
SMP and
NUMA) and those with
distributed memory (e. g.
clusters). The
programmer
A programmer, computer programmer or coder is an author of computer source code someone with skill in computer programming.
The professional titles Software development, ''software developer'' and Software engineering, ''software engineer' ...
is presented with a single
partitioned global address space; where shared variables may be directly read and written by any
processor, but each variable is physically associated with a single processor. UPC uses a ''single program, multiple data'' (
SPMD) model of computation in which the amount of parallelism is fixed at program startup time, typically with a single
thread of execution per processor.
In order to express parallelism, UPC extends
ISO C 99 with the following constructs:
* An explicitly parallel execution model
* A shared address space ( storage qualifier) with thread-local parts (normal variables)
* Synchronization primitives and a memory consistency model
* Explicit communication primitives, e. g. upc_memput
*
Memory management
Memory management (also dynamic memory management, dynamic storage allocation, or dynamic memory allocation) is a form of Resource management (computing), resource management applied to computer memory. The essential requirement of memory manag ...
primitives
The UPC language evolved from experiences with three other earlier languages that proposed parallel extensions to ISO C 99: AC,
Split-C
Split-C is a parallel extension of the C programming language. The Split-C project website describes Split-C as:
a parallel extension of the C programming language that supports efficient access to a global address space on current distributed me ...
, and Parallel C preprocessor (PCP). UPC is not a
superset 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 the
message passing
In computer science, message passing is a technique for invoking behavior (i.e., running a program) on a computer. The invoking program sends a message to a process (which may be an actor or object) and relies on that process and its supporting ...
programming paradigm
A programming paradigm is a relatively high-level way to conceptualize and structure the implementation of a computer program. A programming language can be classified as supporting one or more paradigms.
Paradigms are separated along and descri ...
.
See also
*
Cilk
Cilk, Cilk++, Cilk Plus and OpenCilk are general-purpose programming languages designed for multithreaded parallel computing. They are based on the C and C++ programming languages, which they extend with constructs to express parallel loop ...
*
Coarray Fortran
*
Chapel
A chapel (from , a diminutive of ''cappa'', meaning "little cape") is a Christianity, Christian place of prayer and worship that is usually relatively small. The term has several meanings. First, smaller spaces inside a church that have their o ...
*
X10
*
High Performance Fortran
*
OpenMP
*
Partitioned global address space
*
Parallel programming model
*
Software transactional memory
External links
*
UPC at LBNLUPC at GWU
UPC Tutorial(2003)
{{Authority control
Concurrent programming languages
Parallel computing
C programming language family