Unified Parallel C (UPC) is an extension of the
C programming language
''The C Programming Language'' (sometimes termed ''K&R'', after its authors' initials) is a computer programming book written by Brian Kernighan and Dennis Ritchie, the latter of whom originally designed and implemented the language, as well as ...
designed for
high-performance computing
High-performance computing (HPC) uses supercomputers and computer clusters to solve advanced computation problems.
Overview
HPC integrates systems administration (including network and security knowledge) and parallel programming into a multi ...
on large-scale
parallel machine
Parallel computing is a type of computation in which many calculations or processes are carried out simultaneously. Large problems can often be divided into smaller ones, which can then be solved at the same time. There are several different for ...
s, including those with a common global
address space
In computing, an address space defines a range of discrete addresses, each of which may correspond to a network host, peripheral device, disk sector, a memory cell or other logical or physical entity.
For software programs to save and retrieve ...
(
SMP
SMP may refer to:
Organisations
* Scale Model Products, 1950s, acquired by Aluminum Model Toys
* School Mathematics Project, UK developer of mathematics textbooks
* '' Sekolah Menengah Pertama'', "junior high school" in Indonesia
* Shanghai Mun ...
and
NUMA) and those with
distributed memory
In computer science, distributed memory refers to a multiprocessor computer system in which each processor has its own private memory. Computational tasks can only operate on local data, and if remote data are required, the computational task m ...
(e. g.
clusters). The
programmer
A computer programmer, sometimes referred to as a software developer, a software engineer, a programmer or a coder, is a person who creates computer programs — often for larger computer software.
A programmer is someone who writes/creates ...
is presented with a single
partitioned global address space
In computer science, partitioned global address space (PGAS) is a parallel programming model paradigm. PGAS is typified by communication operations involving a global memory address space abstraction that is logically partitioned, where a portion ...
; 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
Thread may refer to:
Objects
* Thread (yarn), a kind of thin yarn used for sewing
** Thread (unit of measurement), a cotton yarn measure
* Screw thread, a helical ridge on a cylindrical fastener
Arts and entertainment
* ''Thread'' (film), 2016 ...
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 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 mem ...
, and Parallel C preprocessor (PCP). UPC is not a
superset
In mathematics, set ''A'' is a subset of a set ''B'' if all elements of ''A'' are also elements of ''B''; ''B'' is then a superset of ''A''. It is possible for ''A'' and ''B'' to be equal; if they are unequal, then ''A'' is a proper subset of ...
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 supporti ...
programming paradigm
Programming paradigms are a way to classify programming languages based on their features. Languages can be classified into multiple paradigms.
Some paradigms are concerned mainly with implications for the execution model of the language, s ...
.
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 loo ...
*
Coarray Fortran
*
Chapel
A chapel is a Christian place of prayer and worship that is usually relatively small. The term has several meanings. Firstly, smaller spaces inside a church that have their own altar are often called chapels; the Lady chapel is a common typ ...
*
X10
*
High Performance Fortran
*
OpenMP
OpenMP (Open Multi-Processing) is an application programming interface (API) that supports multi-platform shared-memory multiprocessing programming in C, C++, and Fortran, on many platforms, instruction-set architectures and operating sy ...
*
Partitioned global address space
In computer science, partitioned global address space (PGAS) is a parallel programming model paradigm. PGAS is typified by communication operations involving a global memory address space abstraction that is logically partitioned, where a portion ...
*
Parallel programming model
In computing, a parallel programming model is an abstraction of parallel computer architecture, with which it is convenient to express algorithms and their composition in programs. The value of a programming model can be judged on its ''generality' ...
*
Software transactional memory
External links
*
UPC at LBNLUPC at GWUGNU UPCUPC Tutorial(2003)
{{Authority control
Concurrent programming languages
Parallel computing
C programming language family