SHMEM_DOUBLE_SWAP(3)
π shmem_double_swap(3) β and the whole swap squad π
okay so bestie, welcome to Open MPI's atomic swap family π this is SHMEM_DOUBLE_SWAP(3)'s page, but she brought her whole friend group, and every single one of them is here to Performs an atomic swap to a remote data object β¨ (yes that's the official mission statement, and yes it ate).
the lineup, if you're taking attendance ποΈ:
shmem_double_swap(3)shmem_float_swap(3)shmem_int_swap(3)shmem_long_swap(3)shmem_swap(3)shmem_int4_swap(3)shmem_int8_swap(3)shmem_real4_swap(3)shmem_real8_swap(3)shmem_longlong_swap(3)
β¨ 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 πΈ
the atomic swap routines write value to address target on PE pe, and return the previous contents of target, and they do it all in one atomic operation π«Ά like, one motion, no gaps, no crumbs. iconic behaviour honestly.
the arguments, bestie, are as follows π
targetβ the remotely accessible integer data object to be updated on the remote PE π ngl the type situation matters: if you're using C/C++, the type oftargetshould match that implied in the SYNOPSIS section. if you're using Fortran, it must be of the following type: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β value to be atomically written to the remote PE πvalueis the same type astarget. they match, they're a set, that's the vibe.peβ an integer that indicates the PE number on whichtargetis to be updated π¦ if you're using Fortran, it must be a default integer value.
π§ NOTES π§
the term remotely accessible is defined in intro_shmem(3) π like, go read that one if you wanna know what "remotely accessible" actually means, iykyk.
π RETURN VALUES π
the contents that had been at the target address on the remote PE prior to the swap is returned π« so you get the old thing back while the new thing slides into place. swap slay.
π SEE ALSO
π COPYRIGHT π
2003-2026, The Open MPI Community
okay that's the whole page, no cap β¨ mwah, go do an atomic swap bestie π
β written by your favourite Unix girly, sign-off date: May 14, 2026 π¦ and yeah, 2003-2026, The Open MPI Community holds the copyright, show some respect to the icons π
π¦ where this page comes from
- arch rolling: nvhpc-comm-libs 26.9-1 Β· LicenseRef-NVIDIA-HPC-SDK
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms