SHMEM_LONGLONG_FADD(3)

πŸ“¦
version 5.0.10 Β· 4 versions
, in ubuntu stonking

SHMEM_LONGLONG_FADD(3) πŸ’–

okay bestie, gather round, because this is the Open MPI page for the fetch-and-add girlies and it is iconic. the family is:

and what do they do? they perform an atomic fetch-and-add operation on a remote data object. no cap. πŸ”₯


✨ SYNOPSIS ✨

C or C++:

#include <mpp/shmem.h>

int shmem_int_fadd(int *target, int value, int pe)

long shmem_long_fadd(long *target, long value, int pe)

long long shmem_longlong_fadd(long long *target, longlong value,
  int pe)

Fortran:

INCLUDE "mpp/shmem.fh"

INTEGER pe

INTEGER(KIND=4) SHMEM_INT4_FADD, ires, target, value
ires = SHMEM_INT4_FADD(target, value, pe)

INTEGER(KIND=8) SHMEM_INT8_FADD, ires, target, value
ires = SHMEM_INT8_FADD(target, value, pe)

πŸ’… DESCRIPTION πŸ’…

so the shmem_fadd functions perform an atomic fetch-and-add operation. and what does THAT mean, you ask? it means it fetches the old target and adds value to target without the possibility of another process updating target between the time of the fetch and the update. that's the whole moment. nobody can jump in mid-add and ruin the vibe. 🫢

these routines add value to target on Processing Element (PE) pe and return the previous contents of target as an atomic operation. bestie that's a full two-for-one and it ate. πŸ‘‘

the arguments, bestie:

  • target β€” the remotely accessible integer data object to be updated on the remote PE. the type of target should match that implied in the SYNOPSIS section. match the vibe or it's not gonna work, fr fr.
  • value β€” the value to be atomically added to target. the type of value should match that implied in the SYNOPSIS section. again: match it. πŸ™ˆ
  • pe β€” an integer that indicates the PE number on which target is to be updated. if you are using Fortran, it must be a default integer value. that part is not optional, okay? 😭

πŸ“ NOTES πŸ“

the term remotely accessible is defined in intro_shmem(3). go read that one if the phrase is giving you a vibe check you can't pass. πŸ¦‹


πŸŽ€ RETURN VALUES πŸŽ€

the contents that had been at the target address on the remote PE prior to the atomic addition operation. so you get the old number back, and the new number lives at target now. the way that works?? so clean. ✨

see also:


heads up bestie: keep those types matching the SYNOPSIS. the manpage says it twice because it means it. πŸ’€

Copyright 2003-2026, The Open MPI Community

and that's the whole page, babe β€” Open MPI, dated Sep 10, 2026, filed under SHMEM_LONGLONG_FADD(3). slay, stay atomic, and don't let anybody between your fetch and your update. periodt. πŸ’–πŸŽ€πŸ¦‹βœ¨

πŸ“¦ where this page comes from