SHMEM\_CHAR\_GET(3) Open MPI SHMEM\_CHAR\_GET(3)

[shmem\_character\_get(3)](/man/enterprise-packages/openmpi-cuda-13.3/shmem_character_get.3), [shmem\_complex\_get(3)](/man/enterprise-packages/openmpi-cuda-13.3/shmem_complex_get.3), shmem\_double\_get &lt;#shmem-double-get&gt;(3), shmem\_float\_get &lt;#shmem-float-get&gt;(3), [shmem\_get4(3)](/man/enterprise-packages/openmpi-cuda-13.3/shmem_get4.3), [shmem\_get8(3)](/man/enterprise-packages/openmpi-cuda-13.3/shmem_get8.3), shmem\_get32 &lt;#shmem-get32&gt;(3), shmem\_get64 &lt;#shmem-get64&gt;(3), shmem\_get128 &lt;#shmem-get128&gt;(3), shmem\_getmem &lt;#shmem-getmem&gt;(3), shmem\_int\_get &lt;#shmem-int-get&gt;(3), [shmem\_integer\_get(3)](/man/enterprise-packages/openmpi-cuda-13.3/shmem_integer_get.3), [shmem\_logical\_get(3)](/man/enterprise-packages/openmpi-cuda-13.3/shmem_logical_get.3), shmem\_long\_get &lt;#shmem-long-get&gt;(3), shmem\_longdouble\_get &lt;#shmem-longdouble-get&gt;(3), shmem\_longlong\_get &lt;#shmem-longlong-get&gt;(3), [shmem\_real\_get(3)](/man/enterprise-packages/openmpi-cuda-13.3/shmem_real_get.3), shmem\_short\_get &lt;#shmem-short-get&gt;(3) - Transfers data from a specified processing element (PE).

# [SYNOPSIS](#SYNOPSIS)

C or C++:

```
#include <mpp/shmem.h>
void shmem_get32(void *target, const void *source,


  size_t len, int pe)
void shmem_get64(void *target, const void *source,


  size_t len, int pe)
void shmem_get128(void *target, const void *source,


  size_t len, int pe)
void shmem_getmem(void *target, const void *source,


  size_t len, int pe)
void shmem_int_get(int *target, const int *source,


  size_t len, int pe)
void shmem_double_get(double *target, const double *source,


  size_t len, int pe)
void shmem_float_get(float *target, const float *source,


  size_t len, int pe)
void shmem_long_get(long *target, const long *source,


  size_t len, int pe)
void shmem_longdouble_get(long double *target,


  const long double *source, size_t len, int pe)
void shmem_longlong_get(long long *target,


  const long long *source, size_t len, int pe)
void shmem_short_get(short *target,


  const short *source, size_t len, int pe)
```

Fortran:

```
INCLUDE "mpp/shmem.fh"
INTEGER len, pe
CALL SHMEM_CHARACTER_GET(target, source, len, pe)
CALL SHMEM_COMPLEX_GET(target, source, len, pe)
CALL SHMEM_DOUBLE_GET(target, source, len, pe)
CALL SHMEM_GET4(target, source, len, pe)
CALL SHMEM_GET8(target, source, len, pe)
CALL SHMEM_GET32(target, source, len, pe)
CALL SHMEM_GET64(target, source, len, pe)
CALL SHMEM_GET128(target, source, len, pe)
CALL SHMEM_GETMEM(target, source, len, pe)
CALL SHMEM_INTEGER_GET(target, source, len, pe)
CALL SHMEM_LOGICAL_GET(target, source, len, pe)
CALL SHMEM_REAL_GET(target, source, len, pe)
```

# [DESCRIPTION](#DESCRIPTION)

The shmem\_get routines transfer **nelems** elements of the data object at address **source** on the remote PE **pe**, to the data object at address **target** on the local PE. These routines return after the data has been copied to address **target** on the local PE.

The arguments are as follows:

[**target**](#target)

Local data object to be updated.

[**source**](#source)

Data object on the PE identified by pe that contains the data to be copied. This data object must be remotely accessible.

[**len**](#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)

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\_getmem &lt;#shmem-getmem&gt;: Fortran: Any noncharacter type. C: Any data type. len is**](#shmem_getmem)

scaled in bytes.

[**shmem\_get4, shmem\_get32 &lt;#shmem-get32&gt;: Any noncharacter type that has a storage size**](#shmem_get4,)

equal to 32 bits.

**{shmem\_get8, shmem\_get64 &lt;#shmem-get64&gt;}: Any noncharacter type that has a storage size equal to**

64 bits.

[**shmem\_get128 &lt;#shmem-get128&gt;: Any noncharacter type that has a storage size equal to 128**](#shmem_get128)

bits.

shmem\_short\_get &lt;#shmem-short-get&gt;: Elements of type short.

shmem\_int\_get &lt;#shmem-int-get&gt;: Elements of type int.

shmem\_long\_get &lt;#shmem-long-get&gt;: Elements of type long.

shmem\_longlong\_get &lt;#shmem-longlong-get&gt;: Elements of type long long.

shmem\_float\_get &lt;#shmem-float-get&gt;: Elements of type float.

shmem\_double\_get &lt;#shmem-double-get&gt;: Elements of type double.

shmem\_longdouble\_get &lt;#shmem-longdouble-get&gt;: Elements of type long double.

[**SHMEM\_CHARACTER\_GET**: Elements of type character. len is the number of](#SHMEM_CHARACTER_GET)

characters to transfer. The actual character lengths of the source and target variables are ignored.

**SHMEM\_COMPLEX\_GET**: Elements of type complex of default size.

**SHMEM\_DOUBLE\_GET**: (Fortran) Elements of type double precision.

**SHMEM\_INTEGER\_GET**: Elements of type integer.

**SHMEM\_LOGICAL\_GET**: Elements of type logical.

**SHMEM\_REAL\_GET**: 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](#NOTES)

See [*intro\_shmem*(3)](/man/enterprise-packages/openmpi-cuda-13.3/intro_shmem.3) for a definition of the term remotely accessible.

# [EXAMPLES](#EXAMPLES)

Consider this simple example for Fortran.

```
PROGRAM REDUCTION


  REAL VALUES, SUM


  COMMON /C/ VALUES


  REAL WORK


  CALL START_PES(0) ! ALLOW ANY NUMBER OF PES


  VALUES = MY_PE() ! INITIALIZE IT TO SOMETHING


  CALL SHMEM_BARRIER_ALL


  SUM = 0.0


  DO I = 0,NUM_PES()-1


    CALL SHMEM_REAL_GET(WORK, VALUES, 1, I)


    SUM = SUM + WORK


  ENDDO


  PRINT *, 'PE ', MY_PE(), ' COMPUTED SUM=', SUM


  CALL SHMEM_BARRIER_ALL
END
```

**See also:**

[*intro\_shmem*(3)](/man/enterprise-packages/openmpi-cuda-13.3/intro_shmem.3) [*shmem\_put*(3)](/man/enterprise-packages/openmpi-cuda-13.3/shmem_put.3) [*shmem\_iget*(3)](/man/enterprise-packages/openmpi-cuda-13.3/shmem_iget.3) [*shmem\_quiet*(3)](/man/enterprise-packages/openmpi-cuda-13.3/shmem_quiet.3)

# [Copyright](#Copyright)

2003-2026, The Open MPI Community

September 11, 2026

---

Document: shmem_char_get(3) from openmpi-cuda-13.3 5.0.11-r0 (Chainguard OS)
Source: https://github.com/open-mpi/ompi
