cray-shmem Overview

The logically shared, distributed memory access (SHMEM) routines provide low-latency, high-bandwidth communication for use in highly parallelized scalable programs. The SHMEM data-passing library routines are similar to the message passing interface (MPI) library routines: they pass data between cooperating parallel processes. The SHMEM data-passing routines can be used in programs that perform computations in separate address spaces and that explicitly pass data to and from different processing elements (PEs) in the program. The SHMEM parallel programming model assumes an MPI-1 like group of processes that runs in parallel from job launch to job termination. No processes can be added or removed from this group and all processes execute the same application. Thus, SHMEM applications are of the SPMD (Single Program Multiple Data) type.SHMEM is a one-sided message passing model in which memory is private to each process. The SHMEM routines minimize the overhead associated with data passing requests, maximize bandwidth, and minimize data latency. Data latency is the length of time between a PE initiating a transfer of data and a PE being able to use the data. SHMEM routines support remote data transfer through put operations that transfer data to a different PE and get operations that transfer data from a different PE. Other supported operations are work-shared broadcast and reduction, barrier synchronization, and atomic memory operations. For more information see the mpi and aprun man pages by running:
module load cray-shmem
man intro_shmem
man aprun
The module help page also contains some version specific information:
module help cray-shmem
Man pages for each of the shmem functions are as follows:
  • shmalloc
  • shmem_and
  • shmem_barrier
  • shmem_barrier_all
  • shmem_broadcast
  • shmem_cswap
  • shmem_event
  • shmem_fadd
  • shmem_fence
  • shmem_finalize
  • shmem_finc
  • shmem_g
  • shmem_get
  • shmem_iget
  • shmem_get_nb
  • shmem_init
  • shmem_iput
  • shmem_lock
  • shmem_max
  • shmem_min
  • shmem_my_pe
  • shmem_or
  • shmem_p
  • shmem_prod
  • shmem_put
  • shmem_put_nb
  • shmem_quiet
  • shmem_sum
  • shmem_swap
  • shmem_wait
  • shmem_xor
  • shpalloc
  • shpclmove
  • shpdeallc
  • start_pes


  • 7.2.4
  • 7.2.5
  • 7.3.0
  • 7.3.3
  • 7.4.0
  • 7.5.1
  • 7.5.2
  • 7.6.1
  • 7.6.3


  • 7.2.3
  • 7.2.5
  • 7.2.6
  • 7.3.0
  • 7.3.2
  • 7.3.3
  • 7.4.0
  • 7.4.3
  • 7.5.1
  • 7.5.2
  • 7.6.0