Partitioned global address space

In computer science, a partitioned global address space (PGAS) is a parallel programming model. It assumes a global memory address space that is logically partitioned and a portion of it is local to each process, thread, or processing element. The novelty of PGAS is that the portions of the shared memory space may have an affinity for a particular process, thereby exploiting locality of reference. The PGAS model is the basis of Unified Parallel C, Coarray Fortran, Split-C, Fortress, Chapel, X10, UPC++, Coarray C++, Global Arrays, DASH and SHMEM. In standard Fortran, this model is now an integrated part of the language (as of Fortran 2008). PGAS attempts to combine the advantages of a SPMD programming style for distributed memory systems (as employed by MPI) with the data referencing semantics of shared memory systems. This is more realistic than the traditional shared memory approach of one flat address space, because hardware-specific data locality can be modeled in the partitioning of the address space.

A variant of the PGAS model, asynchronous partitioned global address space (APGAS) permits both local and remote asynchronous task creation.  Two programming languages that use this model are Chapel and X10.

Examples

The Adapteva Epiphany architecture is a manycore network on a chip processor with scratchpad memory addressable between cores.

See also
 Concurrency
 Non-blocking synchronization
 Non-uniform memory access (NUMA)
 Cache-only memory architecture (COMA)

References

External links 
 
 An Introduction to the Partitioned Global Address Space Model
 Programming in the Partitioned Global Address Space Model (2003)
 GASNet Communication System - provides a software infrastructure for PGAS languages over high-performance networks

Programming model
Category:Programming paradigms