Wednesday, August 17, 2016

SHMEM

SHMEM is a communications library that is used for Partitioned Global Address Space (PGAS) style programming.   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 Unified Parallel C, Coarray Fortran, Split-C, Fortress, Chapel, X10, UPC++, 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.

The key features of SHMEM include one-sided point-to-point and collective communication, a shared memory view, and atomic operations that operate on globally visible, or “symmetric” vari-
ables in the program. Such symmetric variables can be either per-process globals (on the heap) or allocated by SHMEM (from a special symmetric heap) at runtime. These features allow the use of remote direct memory access (rDMA) when supported by the network.

Modern commodity networking technology such as Infiniband enables the efficient use of this PGAS library on a wide range of platforms. Runtime systems that have been developed for PGAS languages can easily be used by SHMEM library implementations.

https://en.wikipedia.org/wiki/SHMEM 

https://en.wikipedia.org/wiki/Partitioned_global_address_space


OpenSHMEM

OpenSHMEM is a standard for SHMEM library implementations. Many SHMEM libraries exist but they do not conform to a particular standard and have similar but not identical APIs and behavior, which hinders portability.

The present reference implementation of OpenSHMEM is based on GASNet.

http://openshmem.org/site/

https://github.com/openshmem-org

https://gasnet.lbl.gov/

 Bringing NVIDIA GPUs to the PGAS/OpenSHMEM World - http://on-demand.gputechconf.com/gtc/2016/presentation/s6418-dk-panda-gpus-pgas-openshmem.pdf

No comments:

Post a Comment