SHMEM_LONGLONG_SWAP(3)
π NAME π
okay so this page is the whole swap girlie squad in Open MPI: 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, and shmem_longlong_swap β literally all of them perform an atomic swap to a remote data object. periodt.
β¨ SYNOPSIS β¨
C or C++ besties:
#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 besties:
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 π¦
so the atomic swap routines do the thing: they write value to address target on PE pe, and they hand you back the previous contents of target β all in one atomic operation. no takebacks, no half-finished nonsense, it's giving flawless.
the arguments, one by one π«Ά:
targetβ the remotely accessible integer data object that's getting updated on the remote PE. if you're a C/C++ girlie, the type oftargetneeds to match whatever the SYNOPSIS said. if you're in Fortran, it's gotta 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 that gets atomically written to the remote PE.valueis the same type astarget, no mix-and-matching bestie.peβ an integer telling you which PE numbertargetis getting updated on. if you're doing Fortran, it has to be a default integer value.
πΈ NOTES πΈ
the term remotely accessible is defined over in intro_shmem(3) β go peek at it, it's the lore. π
β RETURN VALUES β
what you get back is the contents that had been at the target address on the remote PE before the swap happened. iconic behavior, truly.
See also:
π Copyright π
2003-2026, The Open MPI Community
and that's the whole page bestie π written up in the Open MPI manual, page SHMEM_LONGLONG_SWAP(3), last touched Sep 10, 2026 β copyright held down by 2003-2026, The Open MPI Community. go swap something atomically, you've got this π«Άβ¨
π¦ 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