Point-to-point synchronization routines#
ROCSHMEM_WAIT_UNTIL#
-
__device__ void rocshmem_TYPENAME_wait_until(TYPE *ivars, int cmp, TYPE val)#
- Parameters:
ivars – Pointer to memory on the symmetric heap to wait for.
cmp – Operation for the comparison.
val – Value to compare the memory at
ivarsto.
- Returns:
None.
Description:
This routine blocks the caller until the condition (*ivars cmp val) is true.
Valid cmp values are listed in Supported comparisons.
Valid TYPENAME and TYPE values are listed in Standard AMO Data Types.
ROCSHMEM_WAIT_UNTIL_ALL#
-
__device__ void rocshmem_TYPENAME_wait_until_all(TYPE *ivars, size_t nelems, const int *status, int cmp, TYPE val)#
- Parameters:
ivars – Pointer to memory on the symmetric heap to wait for.
nelems – Number of elements in the
ivarsarray.status – Array of length
nelemsto exclude elements from the wait.cmp – Operation for the comparison.
val – Value to compare.
- Returns:
None.
Description:
This routine blocks the caller until the condition (ivars[i] cmp val) is true for all ivars.
Valid cmp values are listed in Supported comparisons.
Valid TYPENAME and TYPE values are listed in Standard AMO Data Types.
ROCSHMEM_WAIT_UNTIL_ANY#
-
__device__ size_t rocshmem_TYPENAME_wait_until_any(TYPE *ivars, size_t nelems, const int *status, int cmp, TYPE val)#
- Parameters:
ivars – Pointer to memory on the symmetric heap to wait for.
nelems – Number of elements in the
ivarsarray.status – Array of length
nelemsto exclude elements from the wait.cmp – Operation for the comparison.
val – Value to compare.
- Returns:
The index of an element in the
ivarsarray that satisfies the wait condition. If the wait set is empty, this routine returnsSIZE_MAX.
Description:
This routine blocks the caller until any of the condition (ivars[i] cmp val) is true.
Valid cmp values are listed in Supported comparisons.
Valid TYPENAME and TYPE values are listed in Standard AMO Data Types.
ROCSHMEM_WAIT_UNTIL_SOME#
-
__device__ size_t rocshmem_TYPENAME_wait_until_some(TYPE *ivars, size_t nelems, size_t *indices, const int *status, int cmp, TYPE val)#
- Parameters:
ivars – Pointer to memory on the symmetric heap to wait for.
nelems – Number of elements in the
ivarsarray.indices – List of indices with a length of at least
nelems.status – Array of length
nelemsto exclude elements from the wait.cmp – Operation for the comparison.
val – Value to compare.
- Returns:
The number of indices returned in the indices array. If the wait set is empty, this routine returns
0.
Description:
This routine blocks the caller until any of the conditions (ivars[i] cmp val) is true.
Valid cmp values are listed in Supported comparisons.
Valid TYPENAME and TYPE values are listed in Standard AMO Data Types.
ROCSHMEM_TEST#
-
__device__ int rocshmem_TYPENAME_test(TYPE *ivars, int cmp, TYPE val)#
- Parameters:
ivars – Pointer to memory on the symmetric heap to wait for.
cmp – Operation for the comparison.
val – Value to compare the memory at
ivarsto.
- Returns:
1if the evaluation is true.0otherwise.
Description:
This routine tests if the condition (*ivars cmp val) is true.
ROCSHMEM_SIGNAL_WAIT_UNTIL_ON_STREAM#
-
__host__ void rocshmem_signal_wait_until_on_stream(uint64_t *sig_addr, int cmp, uint64_t cmp_value, hipStream_t stream)#
- Parameters:
sig_addr – Address of the signal variable on the symmetric heap.
cmp – Comparison operator (e.g., ROCSHMEM_CMP_EQ, ROCSHMEM_CMP_GE, etc.).
cmp_value – Value to compare against.
stream – HIP stream on which to enqueue the operation.
- Returns:
None.
Description:
This routine enqueues a wait operation on a HIP stream. The function blocks the calling thread
until the signal variable at sig_addr satisfies the comparison condition (*sig_addr cmp cmp_value).
The wait operation is executed asynchronously on the specified stream. The caller must synchronize
the stream (e.g., using hipStreamSynchronize) to ensure the wait condition has been satisfied.
Valid cmp values are listed in Supported comparisons.
Supported comparisons#
The following table lists the point-to-point comparison constants:
Constant |
Description |
|---|---|
ROCSHMEM_CMP_EQ |
Equal |
ROCSHMEM_CMP_NE |
Not equal |
ROCSHMEM_CMP_GT |
Greater than |
ROCSHMEM_CMP_GE |
Greater than or equal to |
ROCSHMEM_CMP_LT |
Less than |
ROCSHMEM_CMP_LE |
Less than or equal to |