Signaling operations#
ROCSHMEM_PUTMEM_SIGNAL#
-
__device__ void rocshmem_putmem_signal(void *dest, const void *source, size_t nelems, uint64_t *sig_addr, uint64_t signal, int sig_op, int pe)#
-
__device__ void rocshmem_putmem_signal_wave(void *dest, const void *source, size_t nelems, uint64_t *sig_addr, uint64_t signal, int sig_op, int pe)#
-
__device__ void rocshmem_putmem_signal_wg(void *dest, const void *source, size_t nelems, uint64_t *sig_addr, uint64_t signal, int sig_op, int pe)#
-
__device__ void rocshmem_putmem_signal_nbi(void *dest, const void *source, size_t nelems, uint64_t *sig_addr, uint64_t signal, int sig_op, int pe)#
-
__device__ void rocshmem_putmem_signal_nbi_wave(void *dest, const void *source, size_t nelems, uint64_t *sig_addr, uint64_t signal, int sig_op, int pe)#
-
__device__ void rocshmem_putmem_signal_nbi_wg(void *dest, const void *source, size_t nelems, uint64_t *sig_addr, uint64_t signal, int sig_op, int pe)#
-
__device__ void rocshmem_ctx_putmem_signal(rocshmem_ctx_t ctx, void *dest, const void *source, size_t nelems, uint64_t *sig_addr, uint64_t signal, int sig_op, int pe)#
-
__device__ void rocshmem_ctx_putmem_signal_wave(rocshmem_ctx_t ctx, void *dest, const void *source, size_t nelems, uint64_t *sig_addr, uint64_t signal, int sig_op, int pe)#
-
__device__ void rocshmem_ctx_putmem_signal_wg(rocshmem_ctx_t ctx, void *dest, const void *source, size_t nelems, uint64_t *sig_addr, uint64_t signal, int sig_op, int pe)#
-
__device__ void rocshmem_ctx_putmem_signal_nbi(rocshmem_ctx_t ctx, void *dest, const void *source, size_t nelems, uint64_t *sig_addr, uint64_t signal, int sig_op, int pe)#
-
__device__ void rocshmem_ctx_putmem_signal_nbi_wave(rocshmem_ctx_t ctx, void *dest, const void *source, size_t nelems, uint64_t *sig_addr, uint64_t signal, int sig_op, int pe)#
-
__device__ void rocshmem_ctx_putmem_signal_nbi_wg(rocshmem_ctx_t ctx, void *dest, const void *source, size_t nelems, uint64_t *sig_addr, uint64_t signal, int sig_op, 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 bytes to transfer.
sig_addr – Signal address. Must be an address on the symmetric heap.
signal – Signal value.
sig_op – Atomic operation to apply the signal value.
pe – PE of the remote process.
- Returns:
None.
Description:
This function writes contiguous data of nelems bytes from source on the calling PE to dest at pe,
then applies sig_op at sig_addr with the signal value.
Valid sig_op values are listed in SIGNAL_OPERATORS.
ROCSHMEM_PUT_SIGNAL#
-
__device__ void rocshmem_TYPENAME_put_signal(TYPE *dest, const TYPE *source, size_t nelems, uint64_t *sig_addr, uint64_t signal, int sig_op, int pe)#
-
__device__ void rocshmem_TYPENAME_put_signal_wave(TYPE *dest, const TYPE *source, size_t nelems, uint64_t *sig_addr, uint64_t signal, int sig_op, int pe)#
-
__device__ void rocshmem_TYPENAME_put_signal_wg(TYPE *dest, const TYPE *source, size_t nelems, uint64_t *sig_addr, uint64_t signal, int sig_op, int pe)#
-
__device__ void rocshmem_TYPENAME_put_signal_nbi(TYPE *dest, const TYPE *source, size_t nelems, uint64_t *sig_addr, uint64_t signal, int sig_op, int pe)#
-
__device__ void rocshmem_TYPENAME_put_signal_nbi_wave(TYPE *dest, const TYPE *source, size_t nelems, uint64_t *sig_addr, uint64_t signal, int sig_op, int pe)#
-
__device__ void rocshmem_TYPENAME_put_signal_nbi_wg(TYPE *dest, const TYPE *source, size_t nelems, uint64_t *sig_addr, uint64_t signal, int sig_op, int pe)#
-
__device__ void rocshmem_ctx_TYPENAME_put_signal(rocshmem_ctx_t ctx, TYPE *dest, const TYPE *source, size_t nelems, uint64_t *sig_addr, uint64_t signal, int sig_op, int pe)#
-
__device__ void rocshmem_ctx_TYPENAME_put_signal_wave(rocshmem_ctx_t ctx, TYPE *dest, const TYPE *source, size_t nelems, uint64_t *sig_addr, uint64_t signal, int sig_op, int pe)#
-
__device__ void rocshmem_ctx_TYPENAME_put_signal_wg(rocshmem_ctx_t ctx, TYPE *dest, const TYPE *source, size_t nelems, uint64_t *sig_addr, uint64_t signal, int sig_op, int pe)#
-
__device__ void rocshmem_ctx_TYPENAME_put_signal_nbi(rocshmem_ctx_t ctx, TYPE *dest, const TYPE *source, size_t nelems, uint64_t *sig_addr, uint64_t signal, int sig_op, int pe)#
-
__device__ void rocshmem_ctx_TYPENAME_put_signal_nbi_wave(rocshmem_ctx_t ctx, TYPE *dest, const TYPE *source, size_t nelems, uint64_t *sig_addr, uint64_t signal, int sig_op, int pe)#
-
__device__ void rocshmem_ctx_TYPENAME_put_signal_nbi_wg(rocshmem_ctx_t ctx, TYPE *dest, const TYPE *source, size_t nelems, uint64_t *sig_addr, uint64_t signal, int sig_op, 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 of size
TYPEto transfer.sig_addr – Signal address. Must be an address on the symmetric heap.
signal – Signal value.
sig_op – Atomic operation to apply the signal value.
pe – PE of the remote process.
- Returns:
None.
Description:
This function writes contiguous data of nelems elements of TYPE from source on the calling PE to dest at pe,
then applies sig_op at sig_addr with the signal value.
Valid sig_op values are listed in SIGNAL_OPERATORS.
Valid TYPENAME and TYPE values are listed in RMA Data Types.
ROCSHMEM_PUTMEM_SIGNAL_ON_STREAM#
-
__host__ void rocshmem_putmem_signal_on_stream(void *dest, const void *source, size_t nelems, uint64_t *sig_addr, uint64_t signal, int sig_op, int pe, hipStream_t stream)#
- Parameters:
dest – Destination address on the remote PE. Must be an address on the symmetric heap.
source – Source address on the local PE. Must be an address on the symmetric heap.
nelems – Size of the transfer in bytes.
sig_addr – Address of signal variable on the remote PE. Must be an address on the symmetric heap.
signal – Signal value to be written.
sig_op – Signal operation (ROCSHMEM_SIGNAL_SET or ROCSHMEM_SIGNAL_ADD).
pe – PE number of the remote PE.
stream – HIP stream on which to enqueue the operation.
- Returns:
None.
Description:
This routine enqueues a put-with-signal operation on a HIP stream. The function writes contiguous
data of nelems bytes from source on the calling PE to dest at pe, then applies sig_op
at sig_addr with the signal value. The operation is enqueued on the specified stream and will
execute asynchronously. The caller must synchronize the stream (e.g., using hipStreamSynchronize)
to ensure completion.
Valid sig_op values are listed in SIGNAL_OPERATORS.
ROCSHMEM_SIGNAL_ADD#
-
__device__ void rocshmem_signal_add(uint64_t *sig_addr, uint64_t signal, int pe)#
-
__device__ void rocshmem_ctx_signal_add(rocshmem_ctx_t ctx, uint64_t *sig_addr, uint64_t signal, int pe)#
- Parameters:
ctx – Context with which to perform this operation.
sig_addr – Symmetric address of the signal data object on the remote PE.
signal – Value to add to the signal data object.
pe – PE containing the signal data object.
- Returns:
None.
Description:
This function atomically adds signal to the signal data object at sig_addr
on PE pe.
ROCSHMEM_SIGNAL_FETCH#
-
__device__ uint64_t rocshmem_signal_fetch(const uint64_t *sig_addr)#
-
__device__ uint64_t rocshmem_signal_fetch_wg(const uint64_t *sig_addr)#
-
__device__ uint64_t rocshmem_signal_fetch_wave(const uint64_t *sig_addr)#
- Parameters:
sig_addr – Signal address. Must be an address on the symmetric heap.
- Returns:
Value at
sig_addr.
Description:
This function atomically fetches the value stored at sig_addr.
Deprecated since version 3.8.0: rocshmem_signal_fetch_wg and rocshmem_signal_fetch_wave are
deprecated. Use rocshmem_signal_fetch instead.
ROCSHMEM_SIGNAL_SET#
-
__device__ void rocshmem_signal_set(uint64_t *sig_addr, uint64_t signal, int pe)#
-
__device__ void rocshmem_ctx_signal_set(rocshmem_ctx_t ctx, uint64_t *sig_addr, uint64_t signal, int pe)#
- Parameters:
ctx – Context with which to perform this operation.
sig_addr – Symmetric address of the signal data object on the remote PE.
signal – Value to store in the signal data object.
pe – PE containing the signal data object.
- Returns:
None.
Description:
This function atomically stores signal in the signal data object at
sig_addr on PE pe.
ROCSHMEM_SIGNAL_WAIT_UNTIL#
-
__device__ uint64_t rocshmem_signal_wait_until(uint64_t *sig_addr, int cmp, uint64_t cmp_value)#
- Parameters:
sig_addr – Local address of the signal data object.
cmp – Comparison operator.
cmp_value – Value against which to compare the signal.
- Returns:
The signal value that satisfied the comparison.
Description:
This function blocks until (*sig_addr cmp cmp_value) is true and returns
the value that satisfied the comparison.
Valid cmp values are listed in Supported comparisons.
Signal operators#
Value |
Description |
|---|---|
ROCSHMEM_SIGNAL_SET |
The signaling operation routines will atomically set the signal value at |
ROCSHMEM_SIGNAL_ADD |
The signaling operation routines will atomically add the signal value at |