Remote memory access routines#
- Routines with the - _waveand- _wgsuffixes require all threads in a wavefront and workgroup, respectively, to call the routine with the same parameters.
- Routines with the - _nbisubstring will return as soon as the request is posted.
- Routines without the - _nbisubstring will block until the operation completes locally.
- Valid - TYPENAMEand- TYPEvalues can be found in RMA_TYPES.
ROCSHMEM_PUT#
- 
__device__ void rocshmem_TYPENAME_put(TYPE *dest, const TYPE *source, size_t nelems, int pe)#
- 
__device__ void rocshmem_TYPENAME_put_wave(TYPE *dest, const TYPE *source, size_t nelems, int pe)#
- 
__device__ void rocshmem_TYPENAME_put_wg(TYPE *dest, const TYPE *source, size_t nelems, int pe)#
- 
__device__ void rocshmem_TYPENAME_put_nbi(TYPE *dest, const TYPE *source, size_t nelems, int pe)#
- 
__device__ void rocshmem_TYPENAME_put_nbi_wave(TYPE *dest, const TYPE *source, size_t nelems, int pe)#
- 
__device__ void rocshmem_TYPENAME_put_nbi_wg(TYPE *dest, const TYPE *source, size_t nelems, int pe)#
- 
__device__ void rocshmem_ctx_TYPENAME_put(rocshmem_ctx_t ctx, TYPE *dest, const TYPE *source, size_t nelems, int pe)#
- 
__device__ void rocshmem_ctx_TYPENAME_put_wave(rocshmem_ctx_t ctx, TYPE *dest, const TYPE *source, size_t nelems, int pe)#
- 
__device__ void rocshmem_ctx_TYPENAME_put_wg(rocshmem_ctx_t ctx, TYPE *dest, const TYPE *source, size_t nelems, int pe)#
- 
__device__ void rocshmem_ctx_TYPENAME_put_nbi(rocshmem_ctx_t ctx, TYPE *dest, const TYPE *source, size_t nelems, int pe)#
- 
__device__ void rocshmem_ctx_TYPENAME_put_nbi_wave(rocshmem_ctx_t ctx, TYPE *dest, const TYPE *source, size_t nelems, int pe)#
- 
__device__ void rocshmem_ctx_TYPENAME_put_nbi_wg(rocshmem_ctx_t ctx, TYPE *dest, const TYPE *source, size_t nelems, int pe)#
- Parameters:
- ctx – Context with which to perform this operation. 
- dest – Destination address. Must be an address on the symmetric heap. 
- source – Source address. Must be an address on the symmetric heap. 
- nelems – The number of elements to transfer. 
- pe – PE of the remote process. 
 
- Returns:
- None. 
 
Description:
This routine writes contiguous data of nelems elements from source on the calling PE to dest at pe.
ROCSHMEM_PUTMEM#
- 
__device__ void rocshmem_putmem(void *dest, const void *source, size_t nelems, int pe)#
- 
__device__ void rocshmem_putmem_wave(void *dest, const void *source, size_t nelems, int pe)#
- 
__device__ void rocshmem_putmem_wg(void *dest, const void *source, size_t nelems, int pe)#
- 
__device__ void rocshmem_putmem_nbi(void *dest, const void *source, size_t nelems, int pe)#
- 
__device__ void rocshmem_putmem_nbi_wave(void *dest, const void *source, size_t nelems, int pe)#
- 
__device__ void rocshmem_putmem_nbi_wg(void *dest, const void *source, size_t nelems, int pe)#
- 
__device__ void rocshmem_ctx_putmem(rocshmem_ctx_t ctx, void *dest, const void *source, size_t nelems, int pe)#
- 
__device__ void rocshmem_ctx_putmem_wave(rocshmem_ctx_t ctx, void *dest, const void *source, size_t nelems, int pe)#
- 
__device__ void rocshmem_ctx_putmem_wg(rocshmem_ctx_t ctx, void *dest, const void *source, size_t nelems, int pe)#
- 
__device__ void rocshmem_ctx_putmem_nbi(rocshmem_ctx_t ctx, void *dest, const void *source, size_t nelems, int pe)#
- 
__device__ void rocshmem_ctx_putmem_nbi_wave(rocshmem_ctx_t ctx, void *dest, const void *source, size_t nelems, int pe)#
- 
__device__ void rocshmem_ctx_putmem_nbi_wg(rocshmem_ctx_t ctx, void *dest, const void *source, size_t nelems, int pe)#
- Parameters:
- ctx – Context with which to perform this operation. 
- dest – Destination address. Must be an address on the symmetric heap. 
- source – Source address. Must be an address on the symmetric heap. 
- nelems – Size of the transfer in bytes. 
- pe – PE of the remote process. 
 
- Returns:
- None. 
 
Description:
This routine writes contiguous data of nelems bytes from source on the calling PE to dest at pe.
ROCSHMEM_P#
- 
__device__ void rocshmem_TYPENAME_p(TYPE *dest, TYPE value, int pe)#
- 
__device__ void rocshmem_ctx_TYPENAME_p(rocshmem_ctx_t ctx, TYPE *dest, TYPE value, int pe)#
- Parameters:
- ctx – Context with which to perform this operation. 
- dest – Destination address. Must be an address on the symmetric heap. 
- value – Value to write to - destat- pe.
- pe – PE of the remote process. 
 
- Returns:
- None. 
 
Description:
This routine writes a single value to to dest at pe.
ROCSHMEM_GET#
- 
__device__ void rocshmem_TYPENAME_get(TYPE *dest, const TYPE *source, size_t nelems, int pe)#
- 
__device__ void rocshmem_TYPENAME_get_wave(TYPE *dest, const TYPE *source, size_t nelems, int pe)#
- 
__device__ void rocshmem_TYPENAME_get_wg(TYPE *dest, const TYPE *source, size_t nelems, int pe)#
- 
__device__ void rocshmem_TYPENAME_get_nbi(TYPE *dest, const TYPE *source, size_t nelems, int pe)#
- 
__device__ void rocshmem_TYPENAME_get_nbi_wave(TYPE *dest, const TYPE *source, size_t nelems, int pe)#
- 
__device__ void rocshmem_TYPENAME_get_nbi_wg(TYPE *dest, const TYPE *source, size_t nelems, int pe)#
- 
__device__ void rocshmem_ctx_TYPENAME_get(rocshmem_ctx_t ctx, TYPE *dest, const TYPE *source, size_t nelems, int pe)#
- 
__device__ void rocshmem_ctx_TYPENAME_get_wave(rocshmem_ctx_t ctx, TYPE *dest, const TYPE *source, size_t nelems, int pe)#
- 
__device__ void rocshmem_ctx_TYPENAME_get_wg(rocshmem_ctx_t ctx, TYPE *dest, const TYPE *source, size_t nelems, int pe)#
- 
__device__ void rocshmem_ctx_TYPENAME_get_nbi(rocshmem_ctx_t ctx, TYPE *dest, const TYPE *source, size_t nelems, int pe)#
- 
__device__ void rocshmem_ctx_TYPENAME_get_nbi_wave(rocshmem_ctx_t ctx, TYPE *dest, const TYPE *source, size_t nelems, int pe)#
- 
__device__ void rocshmem_ctx_TYPENAME_get_nbi_wg(rocshmem_ctx_t ctx, TYPE *dest, const TYPE *source, size_t nelems, int pe)#
- Parameters:
- ctx – Context with which to perform this operation. 
- dest – Destination address; Must be an address on the symmetric heap. 
- source – Source address. Must be an address on the symmetric heap. 
- nelems – The number of elements to transfer. 
- pe – PE of the remote process. 
 
- Returns:
- None. 
 
Description:
This routine reads contiguous data of nelems elements from source on pe to dest on the calling PE.
ROCSHMEM_GETMEM#
- 
__device__ void rocshmem_getmem(void *dest, const void *source, size_t nelems, int pe)#
- 
__device__ void rocshmem_getmem_wave(void *dest, const void *source, size_t nelems, int pe)#
- 
__device__ void rocshmem_getmem_wg(void *dest, const void *source, size_t nelems, int pe)#
- 
__device__ void rocshmem_getmem_nbi(void *dest, const void *source, size_t nelems, int pe)#
- 
__device__ void rocshmem_getmem_nbi_wave(void *dest, const void *source, size_t nelems, int pe)#
- 
__device__ void rocshmem_getmem_nbi_wg(void *dest, const void *source, size_t nelems, int pe)#
- 
__device__ void rocshmem_ctx_getmem(rocshmem_ctx_t ctx, void *dest, const void *source, size_t nelems, int pe)#
- 
__device__ void rocshmem_ctx_getmem_wave(rocshmem_ctx_t ctx, void *dest, const void *source, size_t nelems, int pe)#
- 
__device__ void rocshmem_ctx_getmem_wg(rocshmem_ctx_t ctx, void *dest, const void *source, size_t nelems, int pe)#
- 
__device__ void rocshmem_ctx_getmem_nbi(rocshmem_ctx_t ctx, void *dest, const void *source, size_t nelems, int pe)#
- 
__device__ void rocshmem_ctx_getmem_nbi_wave(rocshmem_ctx_t ctx, void *dest, const void *source, size_t nelems, int pe)#
- 
__device__ void rocshmem_ctx_getmem_nbi_wg(rocshmem_ctx_t ctx, void *dest, const void *source, size_t nelems, int pe)#
- Parameters:
- ctx – Context with which to perform this operation. 
- dest – Destination address. Must be an address on the symmetric heap. 
- source – Source address. Must be an address on the symmetric heap. 
- nelems – Size of the transfer in bytes. 
- pe – PE of the remote process. 
 
- Returns:
- None. 
 
Description:
This routine reads contiguous data of nelems bytes from source on pe to dest on the calling PE.
ROCSHMEM_G#
- 
__device__ float rocshmem_ctx_float_g(rocshmem_ctx_t ctx, const float *source, int pe)#
- 
__device__ float rocshmem_float_g(const float *source, int pe)#
- Parameters:
- ctx – Context with which to perform this operation. 
- source – Source address. Must be an address on the symmetric heap. 
- pe – PE of the remote process. 
 
- Returns:
- The value read from source at - pe.
 
Description:
This routine reads and returns single value from source at pe.
Supported RMA data types#
The following table lists the supported RMA data types:
| TYPE | TYPENAME | Supported | 
|---|---|---|
| float | float | Yes | 
| double | double | Yes | 
| long double | longdouble | No | 
| char | char | Yes | 
| signed char | schar | Yes | 
| short | short | Yes | 
| int | int | Yes | 
| long | long | Yes | 
| long long | longlong | Yes | 
| unsigned char | uchar | Yes | 
| unsigned short | ushort | Yes | 
| unsigned int | uint | Yes | 
| unsigned long | ulong | Yes | 
| unsigned long long | ulonglong | Yes | 
| int8_t | int8 | No | 
| int16_t | int16 | No | 
| int32_t | int32 | No | 
| int64_t | int64 | No | 
| uint8_t | uint8 | No | 
| uint16_t | uint16 | No | 
| uint32_t | uint32 | No | 
| uint64_t | uint64 | No | 
| size_t | size | No | 
| ptrdiff_t | ptrdiff | No |