---
name: "shmem_iget128"
section: "3"
platform: "linux"
package: "openmpi"
version: "5.0.11-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/shmem_iget128"
---

# shmem\_iget128(3)

shmem\_complex\_iget(3), [*shmem\_double\_iget*(3)](/shmem_double_iget/3.md), [*shmem\_float\_iget*(3)](/shmem_float_iget/3.md), shmem\_iget4(3), shmem\_iget8(3), [*shmem\_iget32*(3)](/shmem_iget32/3.md), [*shmem\_iget64*(3)](/shmem_iget64/3.md), [*shmem\_iget128*(3)](/shmem_iget128/3.md), [*shmem\_int\_iget*(3)](/shmem_int_iget/3.md), shmem\_integer\_iget(3), shmem\_logical\_iget(3), [*shmem\_long\_iget*(3)](/shmem_long_iget/3.md), [*shmem\_longdouble\_iget*(3)](/shmem_longdouble_iget/3.md), [*shmem\_longlong\_iget*(3)](/shmem_longlong_iget/3.md), shmem\_real\_iget(3), [*shmem\_short\_iget*(3)](/shmem_short_iget/3.md) - 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

The strided get routines retrieve array data available at address source on remote PE (pe). The elements of the **source** array are separated by a stride **sst**. Once the data is received, it is stored at the local memory address **target**, separated by stride **tst**. The routines return when the data has been copied into the local **target** array.

The arguments are as follows:

- **target**

  Array to be updated on the local PE.

- **source**

  Array containing the data to be copied on the remote PE.

- **tst**

  The stride between consecutive elements of the target array. The stride is scaled by the element size of the target array. A value of 1 indicates contiguous data. tst must be of type integer. If you are calling from Fortran, it must be a default integer value.

- **sst**

  The stride between consecutive elements of the source array. The stride is scaled by the element size of the source array. A value of 1 indicates contiguous data. sst must be of type integer. If you are calling from Fortran, it must be a default integer value.

- **len**

  Number of elements in the target and source arrays. len must be of type integer. If you are using Fortran, it must be a constant, variable, or array element of default integer type.

- **pe**

  PE number of the remote PE. pe must be of type integer. If you are 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, which are as follows:

- ***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 type short.

*shmem\_int\_iget*: Elements of type int.

*shmem\_long\_iget*: Elements of type long.

*shmem\_longlong\_iget*: Elements of type long long.

*shmem\_float\_iget*: Elements of type float.

*shmem\_double\_iget*: Elements of type double.

*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.

*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.

If you are using Fortran, data types must be of default size. For example, a real variable must be declared as REAL, REAL\*4, or REAL(KIND=4).

## NOTES

See [*intro\_shmem*(3)](/intro_shmem/3.md) for a definition of the term remotely accessible.

## EXAMPLES

The following simple example uses shmem\_logical\_iget in a Fortran program. Compile this example 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)](/intro_shmem/3.md) *shmem\_get*(3) [*shmem\_quiet*(3)](/shmem_quiet/3.md)

## COPYRIGHT

2003-2026, The Open MPI Community
