SHMEM_LONGLONG_FADD(3)
π SHMEM_LONGLONG_FADD(3) β like, the Open MPI manual, section 3, bestie β¨
Okay so welcome to the Open MPI manual page for the fetch-and-add girlies π β this one covers shmem_int4_fadd(3), shmem_int8_fadd(3), shmem_int_fadd(3), shmem_long_fadd(3), and shmem_longlong_fadd(3), and they all do one iconic thing: an atomic fetch-and-add operation on a remote data object. Periodt. π
β¨ 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)
No cap, copy these exactly β case, asterisks, KIND= values, the whole vibe check. π«Ά
πΈ DESCRIPTION πΈ
So the shmem_fadd functions do an atomic fetch-and-add operation, and like... atomic means nobody can sneak in and ruin it, bestie. π An atomic fetch-and-add operation 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. The way that matters is so important β imagine you grabbed the number, someone else changed it, and then you added to the stale one? A whole mess. Not on our watch. π
These routines add value to target on Processing Element (PE) pe and return the previous contents of target as an atomic operation. She's giving main character energy and she's giving correctness. π₯
The arguments are as follows:
targetβ the remotely accessible integer data object to be updated on the remote PE. The type oftargetshould match that implied in the SYNOPSIS section (yes, actually match it β the synopsis is not decorative π ).valueβ the value to be atomically added totarget. The type ofvalueshould match that implied in the SYNOPSIS section too. Iconic behavior: types line up. βpeβ an integer that indicates the PE number on whichtargetis to be updated. If you are using Fortran, it must be a default integer value. (Fortran girlies, hear me: default integer. That's the rule. π)
π¦ NOTES π¦
The term remotely accessible is defined in intro_shmem(3). Go read her, she's the blueprint. πβ¨
π RETURN VALUES π
The contents that had been at the target address on the remote PE prior to the atomic addition operation. Like, the old number β the one from before you showed up and added things. π
π SEE ALSO:
(That's the whole list, bestie β one entry, and she ate. π )
π COPYRIGHT π
2003-2026, The Open MPI Community β legends only, we stan. π«Ά
And that's the page! π Originally dated May 14, 2026, from the Open MPI manual, section 3 β go forth and fetch-and-add atomically, my love. πΈπ§β¨
π¦ 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