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.[1] 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 Coarray Fortran, Unified Parallel C, 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.[2] 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
References
- Cristian Coarfă; Yuri Dotsenko; John Mellor-Crummey, "An Evaluation of Global Address Space Languages: Co-Array Fortran and Unified Parallel C"
- Tim Stitt, "An Introduction to the Partitioned Global Address Space (PGAS) Programming Model"
External links
- Official website
- An Introduction to the Partitioned Global Address Space Model
- Programming in the Partitioned Global Address Space Model Archived 2010-06-12 at the Wayback Machine (2003)
- GASNet Communication System - provides a software infrastructure for PGAS languages over high-performance networks