SHMEM_SWAP(3)
π NAME π
shmem_double_swap, shmem_float_swap, shmem_int_swap, shmem_long_swap, shmem_swap, shmem_int4_swap, shmem_int8_swap, shmem_real4_swap, shmem_real8_swap, shmem_longlong_swap β bestie, these do an atomic swap to a remote data object β¨ (yes, all of them, it's a whole squad, they're a package deal π«Ά)
πΈ SYNOPSIS πΈ
C or C++
#include <mpp/shmem.h>
double shmem_double_swap(double *target, double value,
int pe)
float shmem_float_swap(float *target, float value, int pe)
int shmem_int_swap(int *target, int value, int pe)
long shmem_long_swap(long *target, long value, int pe)
long long shmem_longlong_swap(long long *target,
long long value, int pe)
long shmem_swap(long *target, long value, int pe)
Fortran
INCLUDE "mpp/shmem.fh"
INTEGER pe
INTEGER SHMEM_SWAP
ires = SHMEM_SWAP(target, value, pe)
INTEGER(KIND=4) SHMEM_INT4_SWAP
ires = SHMEM_INT4_SWAP(target, value, pe)
INTEGER(KIND=8) SHMEM_INT8_SWAP
ires = SHMEM_INT8_SWAP(target, value, pe)
REAL(KIND=4) SHMEM_REAL4_SWAP
res = SHMEM_REAL4_SWAP(target, value, pe)
REAL(KIND=8) SHMEM_REAL8_SWAP
res = SHMEM_REAL8_SWAP(target, value, pe)
π¦ DESCRIPTION π¦
okay so picture this: the atomic swap routines write value to address target on PE pe, and hand you back the previous contents of target, all in one atomic operation. Not me doing a trade AND a read at the same time, it's giving multitasking queen π no cap.
The arguments are as follows, bestie, listen up:
targetβ the remotely accessible integer data object that's getting updated on the remote PE. If you're in C/C++ land, the type oftargetshould match whatever the SYNOPSIS section is implying (iykyk). If you're in Fortran land, it has to be one of these:SHMEM_SWAP: Integer of default kindSHMEM_INT4_SWAP: 4-byte integerSHMEM_INT8_SWAP: 8-byte integerSHMEM_REAL4_SWAP: 4-byte realSHMEM_REAL8_SWAP: 8-byte real
valueβ the value to be atomically written to the remote PE. Same type astarget, obviously, matching vibes only πpeβ an integer telling you which PE numbertargetis getting updated on. If you're doing Fortran, it's gotta be a default integer value, fr fr.
π NOTES π
The term remotely accessible is defined over in intro_shmem(3), in case you were like "wait what does that mean" β go read that one, it's the lore π
π RETURN VALUES π
The contents that had been at the target address on the remote PE prior to the swap get returned. So you get the old thing back, and the new thing lands. Periodt π
See also: intro_shmem(3)
π Copyright π
2003-2026, The Open MPI Community
and that's the whole page bestie, brought to you by Open MPI, last touched Sep 10, 2026 β now go swap something atomically, you icon, I'm obsessed π§β¨π
π¦ where this page comes from
- ubuntu stonking: openmpi-doc 5.0.10-6 Β· other
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms