SHMEM_FLOAT_SWAP(3)
π SHMEM_FLOAT_SWAP(3) β the Open MPI glow-up π«Ά
okay so bestie, welcome to the SHMEM_FLOAT_SWAP(3) page, straight outta Open MPI β¨ this is the one where we do the world's fastest trade-off β you hand over a value, you get the old one back, and nobody sees you do it. atomic behavior, no cap π«
β¨ NAME β¨
the whole swap squad, assembled π these are all the same vibe, different types:
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)
and what do they do?? they perform an atomic swap to a remote data object. like a handoff but make it β¨physicsβ¨ π₯
π 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)
like, pick your fave language, they both slay π
π¦ DESCRIPTION π¦
okay so here's the tea β the atomic swap routines write value to address target on PE pe, and return the previous contents of target β all in one atomic operation β like, nobody can sneak in between, it's giving main character energy, it's giving lock-free, it's giving obsessed π
the arguments are as follows, bestie:
targetβ the remotely accessible integer data object that's getting updated on the remote PE π― if you're on C/C++, the type oftargetshould match that implied in the SYNOPSIS section (match the vibe, match the type, fr fr). if you're on Fortran, it has to be one of these:SHMEM_SWAP: Integer of default kind π«SHMEM_INT4_SWAP: 4-byte integer πSHMEM_INT8_SWAP: 8-byte integer πSHMEM_REAL4_SWAP: 4-byte real πΈSHMEM_REAL8_SWAP: 8-byte real πΈ
valueβ the value to be atomically written to the remote PE π and here's the rule:valueis the same type astarget. no mixing, no matching, no chaos π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. periodt π
π NOTES π
the term remotely accessible is defined in intro_shmem(3) β go check that one out if you wanna know the lore π iykyk
π RETURN VALUES π
the contents that had been at the target address on the remote PE prior to the swap is returned π«Ά so like, you get the old thing back, and the new thing is already chilling at the target. iconic exchange behavior honestly π«
π SEE ALSO π
π COPYRIGHT π
2003-2026, The Open MPI Community β respect the elders, they built the shmem π«‘
and that's the whole page, bestie!! π mwah π
~ signed, sealed, delivered by the SHMEM_FLOAT_SWAP(3) page, dated May 14, 2026 ~ ππ¦β¨
π¦ 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