Unified Parallel C

Unified parallel C ( UPC ) is a parallel extension of the C programming language for use in high performance computers. The underlying programming model is single -program multiple -data ( SPMD ) and as a storage model, a partitioned global address space ( PGAS ) will be used.

Overview

The UPC language extensions have been specified by the UPC Consortium in 1999. Goal in the development of UPC were (1) to allow efficient access to the computing resources of a parallel computer, and (2 ) to establish a standard for explicit parallel programming in C. A major advantage of the UPC is that the application programmer can control the distribution of program data directly, and thus data locality can be exploited in a variety of system architectures.

UPC program is executed by a set of threads in parallel in the same global address space. The number of threads is determined either at compile time or at the start of the UPC program and can be queried at runtime by a predefined constant THREADS. Each thread has its own address space, ie the threads of UPC do not correspond to the pthreads library.

The variables of a UPC program are private by default, ie each thread receives a copy of the variables that can be read and written separately from other threads. However, variables can be declared as shared ( shared), so that all threads can share a single copy of the variable. Shared variables always have an affinity to a particular thread, in the address space they are stored. For shared fields (shared arrays), a distribution of the array elements are specified on the threads, so that different field elements have an affinity for different threads.

792233
de