SHMEM\_DOUBLE\_GET\_NBI(3) Open MPI SHMEM\_DOUBLE\_GET\_NBI(3)

shmem\_getmem\_nbi &lt;#shmem-getmem-nbi&gt;(3), shmem\_char\_get\_nbi &lt;#shmem-char-get-nbi&gt;(3), shmem\_short\_get\_nbi &lt;#shmem-short-get-nbi&gt;(3), shmem\_int\_get\_nbi &lt;#shmem-int-get-nbi&gt;(3), shmem\_long\_get\_nbi &lt;#shmem-long-get-nbi&gt;(3), shmem\_longlong\_get\_nbi &lt;#shmem-longlong-get-nbi&gt;(3), shmem\_float\_get\_nbi &lt;#shmem-float-get-nbi&gt;(3), [shmem\_double\_get\_nbi(3)](/man/enterprise-packages/openmpi-cuda-13.3/shmem_double_get_nbi.3), shmem\_longdouble\_get\_nbi &lt;#shmem-longdouble-get-nbi&gt;(3), shmem\_get8\_nbi &lt;#shmem-get8-nbi&gt;(3), shmem\_get16\_nbi &lt;#shmem-get16-nbi&gt;(3), shmem\_get32\_nbi &lt;#shmem-get32-nbi&gt;(3), shmem\_get64\_nbi &lt;#shmem-get64-nbi&gt;(3), shmem\_get128\_nbi &lt;#shmem-get128-nbi&gt;(3), - The nonblocking get routines provide a method for copying data from a contiguous remote data object on the specified PE to the local data object.

# [SYNOPSIS](#SYNOPSIS)

C or C++:

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


  size_t nelems, int pe)
void shmem_char_get(char *dest, const char *source,


  size_t nelems, int pe)
void shmem_short_get(short *dest, const short *source,


  size_t nelems, int pe)
void shmem_int_get(int *dest, const int *source,


  size_t nelems, int pe)
void shmem_long_get(long *dest, const long *source,


  size_t nelems, int pe)
void shmem_longlong_get(long long *dest, const long long *source,


  size_t nelems, int pe)
void shmem_float_get(float *dest, const float *source,


  size_t nelems, int pe)
void shmem_double_get(double *dest, const double *source,


  size_t nelems, int pe)
void shmem_longdouble_get(long double *dest, const long double *source,


  size_t nelems, int pe)
void shmem_get8(void *dest, const void *source,


  size_t nelems, int pe)
void shmem_get16(void *dest, const void *source,


  size_t nelems, int pe)
void shmem_get32(void *dest, const void *source,


  size_t nelems, int pe)
void shmem_get64(void *dest, const void *source,


  size_t nelems, int pe)
void shmem_get128(void *dest, const void *source,


  size_t nelems, int pe)
```

Fortran:

```
INCLUDE "mpp/shmem.fh"
INTEGER nelems, pe
CALL SHMEM_GETMEM_NBI(dest, source, nelems, pe)
CALL SHMEM_CHARACTER_GET_NBI(dest, source, nelems, pe)
CALL SHMEM_COMPLEX_GET_NBI(dest, source, nelems, pe)
CALL SHMEM_DOUBLE_GET_NBI(dest, source, nelems, pe)
CALL SHMEM_INTEGER_GET_NBI(dest, source, nelems, pe)
CALL SHMEM_LOGICAL_GET_NBI(dest, source, nelems, pe)
CALL SHMEM_REAL_GET_NBI(dest, source, nelems, pe)
CALL SHMEM_GET4_NBI(dest, source, nelems, pe)
CALL SHMEM_GET8_NBI(dest, source, nelems, pe)
CALL SHMEM_GET32_NBI(dest, source, nelems, pe)
CALL SHMEM_GET64_NBI(dest, source, nelems, pe)
CALL SHMEM_GET128_NBI(dest, source, nelems, pe)
```

# [DESCRIPTION](#DESCRIPTION)

The get routines provide a method for copying a contiguous symmetric data object from a different PE to a contiguous data object on the local PE. The routines return after posting the operation. The operation is considered complete after a subsequent call to shmem\_quiet &lt;#shmem-quiet&gt;. At the completion of shmem\_quiet &lt;#shmem-quiet&gt;, the data has been delivered to the dest array on the local PE.

The arguments are as follows:

[**dest**](#dest)

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.

[**nelems**](#nelems)

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.

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_NBI(WORK, VALUES, 1, I)


    CALL SHMEM_QUIET                ! wait for delivery


    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\_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_double_get_nbi(3) from openmpi-cuda-13.3 5.0.11-r0 (Chainguard OS)
Source: https://github.com/open-mpi/ompi
