Partitioned global address space
This article needs additional citations for verification. (February 2013) (Learn how and when to remove this template message)
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 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. Two programming languages that use this model are Chapel and X10.
- Non-blocking synchronization
- Non-uniform memory access (NUMA)
- Cache-only memory architecture (COMA)
- 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"
- Official website
- 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
|This computer-programming-related article is a stub. You can help Wikipedia by expanding it.|