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:

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 of target should 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: value is the same type as target. no mixing, no matching, no chaos πŸ™ˆ
  • pe β€” an integer that indicates the PE number on which target is 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 🌟


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