SHMEM_IPUT128(3)
π SHMEM_IPUT128(3) π
okay so bestie, this is the Open MPI manual, section 3, and this page is the group chat for the entire strided-put friend group β not just shmem_iput128. Every single one of these cuties lives here, so let's go π«Ά
β¨ NAME β¨
Transfer strided data to a specified processing element (PE). That's the whole vibe. The full roster of icons on this page:
shmem_complex_iput(3)shmem_double_iput(3)shmem_float_iput(3)shmem_int_iput(3)shmem_integer_iput(3)shmem_iput4(3)shmem_iput8(3)shmem_iput32(3)shmem_iput64(3)shmem_iput128(3)shmem_logical_iput(3)shmem_long_iput(3)shmem_longdouble_iput(3)shmem_longlong_iput(3)shmem_real_iput(3)shmem_short_iput(3)
π¦ SYNOPSIS π¦
C or C++
#include <mpp/shmem.h>
void shmem_double_iput(double *target, const double *source,
ptrdiff_t tst, ptrdiff_t sst, size_t len, int pe)
void shmem_float_iput(float *target, const float *source,
ptrdiff_t tst, ptrdiff_t sst, size_t len, int pe)
void shmem_int_iput(int *target, const int *source,
ptrdiff_t tst, ptrdiff_t sst, size_t len, int pe)
void shmem_iput32(void *target, const void *source,
ptrdiff_t tst, ptrdiff_t sst, size_t len, int pe)
void shmem_iput64(void *target, const void *source,
ptrdiff_t tst, ptrdiff_t sst, size_t len, int pe)
void shmem_iput128(void *target, const void *source,
ptrdiff_t tst, ptrdiff_t sst, size_t len, int pe)
void shmem_long_iput(long *target, const long *source,
ptrdiff_t tst, ptrdiff_t sst, size_t len, int pe)
void shmem_longdouble_iput(long double *target,
const long double *source, ptrdiff_t tst, ptrdiff_t sst,
size_t len, int pe)
void shmem_longlong_iput(long long *target,
const long long *source, ptrdiff_t tst, ptrdiff_t sst,
size_t len, int pe)
void shmem_short_iput(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_IPUT(target, source, tst, sst, len,
& pe)
CALL SHMEM_DOUBLE_IPUT(target, source, tst, sst, len,
& pe)
CALL SHMEM_INTEGER_IPUT(target, source, tst, sst, len,
& pe)
CALL SHMEM_IPUT4(target, source, tst, sst, len, pe)
CALL SHMEM_IPUT8(target, source, tst, sst, len, pe)
CALL SHMEM_IPUT32(target, source, tst, sst, len, pe)
CALL SHMEM_IPUT64(target, source, tst, sst, len, pe)
CALL SHMEM_IPUT128(target, source, tst, sst, len, pe)
CALL SHMEM_LOGICAL_IPUT(target, source, tst, sst, len,
& pe)
CALL SHMEM_REAL_IPUT(target, source, tst, sst, len, pe)
π DESCRIPTION π
so what do these do?? The shmem_iput routines read the elements of a local array (source) and write them to a remote array (target) on the PE indicated by pe. Simple, chic, effective. β¨
β οΈ but listen: these routines return when the data has been copied out of the source array on the local PE β that does not necessarily mean the data has made it to the remote data object yet. So don't be out here assuming the remote side has it. Periodt.
the arguments, bestie
targetβ the array to be updated on the remote PE. this data object must be remotely accessible. no exceptions, it's giving mandatory.sourceβ the array holding the data that's getting copied. that's your local stash πtstβ the stride between consecutive elements of the target array. it gets scaled by the element size of the target array. a value of1means contiguous data.tstmust be of type integer. Fortran besties: it's gotta be a default integer value.sstβ the stride between consecutive elements of the source array. it gets scaled by the element size of the source array. a value of1means contiguous data.sstmust be of type integer. Fortran besties: again, default integer value.lenβ the number of elements in the target and source arrays.lenmust be of type integer. In 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 type integer. In Fortran it must be a constant, variable, or array element of default integer type.
ok so bothtstandsstget scaled by element size β one by the target's element size, one by the source's. don't mix those up, iykyk π
typing constraints (the vibe check) π
The target and source data objects must conform to typing constraints, which are as follows:
shmem_iput32,shmem_iput4β any noncharacter type that has a storage size equal to 32 bits.shmem_iput64,shmem_iput8β any noncharacter type that has a storage size equal to 64 bits.shmem_iput128β any noncharacter type that has a storage size equal to 128 bits.shmem_short_iputβ elements of typeshort.shmem_int_iputβ elements of typeint.shmem_long_iputβ elements of typelong.shmem_longlong_iputβ elements of typelong long.shmem_float_iputβ elements of typefloat.shmem_double_iputβ elements of typedouble.shmem_longdouble_iputβ elements of typelong double.SHMEM_COMPLEX_IPUTβ elements of typecomplexof default size.SHMEM_DOUBLE_IPUTβ (Fortran) elements of typedouble precision.SHMEM_INTEGER_IPUTβ elements of typeinteger.SHMEM_LOGICAL_IPUTβ elements of typelogical.SHMEM_REAL_IPUTβ elements of typereal.
if you're on the Fortran side, data types must be of default size. like, a real variable has to be declared as REAL, REAL*4 or REAL(KIND=4). that's the rule, no cap. π
π NOTES π
go read intro_shmem(3) for the definition of the term remotely accessible. it's literally the whole lore drop, you need it. π
π EXAMPLES π
Consider the following simple shmem_long_iput example for C/C++ programs. (yes we're pasting it exactly as the page has it, down to the punctuation, bestie β no editing, no notes π)
#include <mpp/shmem.h>
main()
{
short source[10] = { 1, 2, 3, 4, 5,
6, 7, 8, 9, 10 };
static short target[10];
shmem_init();
if (shmem_my_pe() == 0) {
/* put 10 words into target on PE 1 */
shmem_short_iput(target, source, 1, 2, 5, 1);
}
shmem_barrier_all(); /* sync sender and receiver */
if (shmem_my_pe() == 1) {
shmem_udcflush(); /* not required on IRIX systems */
printf("target on PE %d is %d %d %d %d %d0, shmem_my_pe(),
(int)target[0], (int)target[1], (int)target[2],
(int)target[3], (int)target[4] );
}
shmem_barrier_all(); /* sync before exiting */
}
See also:
intro_shmem(3)shmem_iget(3)shmem_put(3)shmem_quiet(3)
π Copyright π
2003-2026, The Open MPI Community
and that's the whole page, bestie!! π«Άβ¨ this serve was brought to you by the Open MPI girlies, page dated Sep 10, 2026, manual name SHMEM_IPUT128(3), signing off β go put some strided data somewhere cute. mwah π
ππ¦
π¦ 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