SHMEM_LONGDOUBLE_IGET(3)
π SHMEM_LONGDOUBLE_IGET π
okay bestie, listen β this is the Open MPI strided-get family and it's giving so many aliases π¦. We're talking:
shmem_complex_iget(3), shmem_double_iget(3), shmem_float_iget(3), shmem_iget4(3), shmem_iget8(3), shmem_iget32(3), shmem_iget64(3), shmem_iget128(3), shmem_int_iget(3), shmem_integer_iget(3), shmem_logical_iget(3), shmem_long_iget(3), shmem_longdouble_iget(3), shmem_longlong_iget(3), shmem_real_iget(3), shmem_short_iget(3) β and literally all of them do the same iconic thing: Transfers strided data from a specified processing element (PE) β¨
πΈ SYNOPSIS πΈ
C or C++:
#include <mpp/shmem.h>
void shmem_iget32(void *target, const void *source,
ptrdiff_t tst, ptrdiff_t sst, size_t len, int pe)
void shmem_iget64(void *target, const void *source,
ptrdiff_t tst, ptrdiff_t sst, size_t len, int pe)
void shmem_iget128(void *target, const void *source,
ptrdiff_t tst, ptrdiff_t sst, size_t len, int pe)
void shmem_int_iget(int *target, const int *source,
ptrdiff_t tst, ptrdiff_t sst, size_t len, int pe)
void shmem_double_iget(double *target, const double *source,
ptrdiff_t tst, ptrdiff_t sst, size_t len, int pe)
void shmem_float_iget(float *target, const float *source,
ptrdiff_t tst, ptrdiff_t sst, size_t len, int pe)
void shmem_long_iget(long *target, const long *source,
ptrdiff_t tst, ptrdiff_t sst, size_t len, int pe)
void shmem_longdouble_iget(long double *target,
const long double *source, ptrdiff_t tst, ptrdiff_t sst,size_t len, int pe)
void shmem_longlong_iget(long long *target,
const long long *source, ptrdiff_t tst, ptrdiff_t sst, size_t len, int pe)
void shmem_short_iget(short *target,
const short *source, ptrdiff_t tst, ptrdiff_t sst, size_t len, int pe)
Fortran:
INCLUDE "mpp/shmem.fh"
INTEGER tst, sst, len, pe
CALL SHMEM_COMPLEX_IGET(target, source, tst, sst, len,
& pe)
CALL SHMEM_DOUBLE_IGET(target, source, tst, sst, len,
& pe)
CALL SHMEM_IGET4(target, source, tst, sst, len, pe)
CALL SHMEM_IGET8(target, source, tst, sst, len, pe)
CALL SHMEM_IGET32(target, source, tst, sst, len, pe)
CALL SHMEM_IGET64(target, source, tst, sst, len, pe)
CALL SHMEM_IGET128(target, source, tst, sst, len, pe)
CALL SHMEM_INTEGER_IGET(target, source, tst, sst, len,
& pe)
CALL SHMEM_LOGICAL_IGET(target, source, tst, sst, len,
& pe)
CALL SHMEM_REAL_IGET(target, source, tst, sst, len, pe)
π DESCRIPTION π
So the strided get routines do a lil fetch: they grab array data that lives at address source on the remote PE (pe) π«Ά. The elements of the source array are spaced apart by a stride sst β think of it like the elements are holding hands but with gaps, iykyk. Once the data arrives, it gets parked at your local memory address target, spaced out by stride tst. And the routines don't ghost you partway β they return once the data has been copied into the local target array. periodt. π
Here's the whole cast of arguments, no gatekeeping:
targetβ the array that gets updated over on the local PE. that's the glow-up destination β¨sourceβ the array holding the data to be copied, chillin' on the remote PE.tstβ the stride between consecutive elements of the target array. It's scaled by the element size of the target array. A value of1means contiguous data (iconic, no gaps, we love her).tstmust be of typeinteger. If you're calling from Fortran, it must be a default integer value.sstβ the stride between consecutive elements of the source array. Scaled by the element size of the source array. A value of1means contiguous data.sstmust be of typeinteger. If you're calling from Fortran, it must be a default integer value.lenβ the number of elements in the target and source arrays.lenmust be of typeinteger. If you're using Fortran, it must be a constant, variable, or array element of default integer type.peβ the PE number of the remote PE.pemust be of typeinteger. If you're using Fortran, it must be a constant, variable, or array element of default integer type.
The target and source data objects must conform to typing constraints, bestie β this is not a drill π¨. Here they are:
shmem_iget32,shmem_iget4: Any noncharacter type that has a storage size equal to 32 bits.shmem_iget64,shmem_iget8: Any noncharacter type that has a storage size equal to 64 bits.shmem_iget128: Any noncharacter type that has a storage size equal to 128 bits.shmem_short_iget: Elements of typeshort.shmem_int_iget: Elements of typeint.shmem_long_iget: Elements of typelong.shmem_longlong_iget: Elements of typelong long.shmem_float_iget: Elements of typefloat.shmem_double_iget: Elements of typedouble.shmem_longdouble_iget: Elements of typelong double.SHMEM_COMPLEX_IGET: Elements of type complex of default size.SHMEM_DOUBLE_IGET: (Fortran) Elements of type double precision.SHMEM_INTEGER_IGET: Elements of type integer.SHMEM_LOGICAL_IGET: Elements of type logical.SHMEM_REAL_IGET: Elements of type real.shmem_longdouble_iget: Elements of type long double.SHMEM_COMPLEX_IGET: Elements of type complex of default size.SHMEM_DOUBLE_IGET: (Fortran) Elements of type double precision.SHMEM_INTEGER_IGET: Elements of type integer.SHMEM_LOGICAL_IGET: Elements of type logical.SHMEM_REAL_IGET: Elements of type real.
(yes babe, some of those show up twice β we keep it 100% faithful, no edits, that's the vibe π)
If you're using Fortran, data types must be of default size. Like, a real variable has to be declared as REAL, REAL*4, or REAL(KIND=4). no custom sizing, sorry not sorry π
π NOTES π
Wanna know what "remotely accessible" even means? See intro_shmem(3) for the definition, bestie. π«
π EXAMPLES π
This cute lil Fortran program uses shmem_logical_iget. Compile it with the -lsma compiler option β¨:
PROGRAM STRIDELOGICAL
LOGICAL SOURCE(10), TARGET(5)
SAVE SOURCE ! SAVE MAKES IT REMOTELY ACCESSIBLE
DATA SOURCE /.T.,.F.,.T.,.F.,.T.,.F.,.T.,.F.,.T.,.F./
DATA TARGET / 5*.F. /
CALL START_PES(2)
IF (MY_PE() .EQ. 0) THEN
CALL SHMEM_LOGICAL_IGET(TARGET, SOURCE, 1, 2, 5, 1)
PRINT*,'TARGET AFTER SHMEM_LOGICAL_IGET:',TARGET
ENDIF
CALL SHMEM_BARRIER_ALL
END
See also: intro_shmem(3) shmem_get(3) shmem_quiet(3) β the whole friend group, go say hi π π¦
π Copyright π
That's the whole page, bestie! This masterpiece is Β© 2003-2026, The Open MPI Community, and this particular edition was stamped Sep 10, 2026. no cap, she's been serving since '03 πβ¨π
π¦ where this page comes from
- ubuntu stonking: openmpi-doc 5.0.10-6 Β· other
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms