shmem_put_nbi

The nonblocking put routines provide a method for copying data
from a contiguous local data object to a data object on a specified PE.

Definitions

C11 Synopsis

void shmem_put_nbi(TYPE *dest, const TYPE *source, size_t nelems, int pe);
void shmem_put_nbi(shmem_ctx_t ctx, TYPE *dest, const TYPE *source, size_t nelems,
                   int pe);

where TYPE is one of the standard RMA types specified by Table:1

C/C++ Synopsis

void shmem_TYPENAME_put_nbi(TYPE *dest, const TYPE *source, size_t nelems, int pe);
void shmem_ctx_TYPENAME_put_nbi(shmem_ctx_t ctx, TYPE *dest, const TYPE *source,
                                size_t nelems, int pe);

where TYPE is one of the standard RMA types and has a corresponding TYPENAME specified by Table:1

void shmem_putSIZE_nbi(void *dest, const void *source, size_t nelems, int pe);
void shmem_ctx_putSIZE_nbi(shmem_ctx_t ctx, void *dest, const void *source,
                           size_t nelems, int pe);

where SIZE is one of 8, 16, 32, 64, 128.

void shmem_putmem_nbi(void *dest, const void *source, size_t nelems, int pe);
void shmem_ctx_putmem_nbi(shmem_ctx_t ctx, void *dest, const void *source,
                          size_t nelems, int pe);

Datatype Reference Table

Table:1

|           TYPE          |      TYPENAME       |
|-------------------------|---------------------|
|   float                 |     float           |
|   double                |     double          |
|   long double           |     longdouble      |
|   char                  |     char            |
|   signed char           |     schar           |
|   short                 |     short           |
|   int                   |     int             |
|   long                  |     long            |
|   long long             |     longlong        |
|   unsigned char         |     uchar           |
|   unsigned short        |     ushort          |
|   unsigned int          |     uint            |
|   unsigned long         |     ulong           |
|   unsigned long long    |     ulonglong       |
|   int8_t                |     int8            |
|   int16_t               |     int16           |
|   int32_t               |     int32           |
|   int64_t               |     int64           |
|   uint8_t               |     uint8           |
|   uint16_t              |     uint16          |
|   uint32_t              |     uint32          |
|   uint64_t              |     uint64          |
|   size_t                |     size            |
|   ptrdiff_t             |     ptrdiff         |

Arguments

ctx     The context on which to perform the operation. When this argument is
        not provided, the operation is performed on SHMEM_CTX_DEFAULT.
dest    Data object to be updated on the remote PE. This data object must be
        remotely accessible.
source  Data object containing the data to be copied.
nelems  Number of elements in the dest and source arrays. nelems must be of
        type size_t for C. When 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. When using
        Fortran, it must be a constant, variable, or array element of default
        integer type.

Description

The routines return after posting the operation.  The operation is considered
complete after a subsequent call to shmem_quiet. At the completion of
shmem_quiet, the data has been copied into the dest array on the destination
PE. The delivery of data words into the data object on the destination PE
may occur in any order. Furthermore, two successive put routines may deliver
data out of order unless a call to shmem_fence is introduced between the two
calls.

When using Fortran, dest and source must conform to certain typing
constraints, which are as follows:
|     Routine           |    Data type of dest and source    |
|-----------------------|------------------------------------|
|shmem_putmem_nbi       |Fortran: Any noncharacter type.     |
|                       |C: Any data type. nelems is scaled  |
|                       |in bytes.                           |
|shmem_put4_nbi,        |Any noncharacter type that has a    |
|shmem_put32_nbi        |storage size equal to 32 bits.      |
|shmem_put8_nbi         |C: Any noncharacter type that has a |
|                       |storage size equal to 8 bits.       |
|                       |Fortran: Any noncharacter type that |
|                       |has a storage size equal to 64 bits.|
|shmem_put64_nbi        |Any noncharacter type that has a    |
|                       |storage size equal to 64 bits.      |
|shmem_put128_nbi       |Any  noncharacter type that has a   |
|                       |storage size equal to 128 bits.     |
|SHMEM_CHARACTER_PUT_NBI|Elements of type character. nelems  |
|                       |is the number  of characters to     |
|                       |transfer. The actual character      |
|                       |lengths of the source and dest      |
|                       |variables are ignored.              |
|SHMEM_COMPLEX_PUT_NBI  |Elements of type complex of default |
|                       |size.                               |
|SHMEM_DOUBLE_PUT_NBI   |Fortran: Elements of type double    |
|                       |precision.                          |
|SHMEM_INTEGER_PUT_NBI  |Elements of type integer.           |
|SHMEM_LOGICAL_PUT_NBI  |Elements of type logical.           |
|SHMEM_REAL_PUT_NBI     |Elements of type real.              |

Return Values

None.

Notes

None.