Man page - shmem_long_wait_until.openmpi(3)
Packages contains this manual
- shmem_float_swap.openmpi(3)
- shmem_long_xor_to_all.openmpi(3)
- shmem_iput32.openmpi(3)
- shmem_longlong_inc.openmpi(3)
- shmem_longlong_cswap.openmpi(3)
- prterun(1)
- shmem_longlong_swap.openmpi(3)
- shmem_get32.openmpi(3)
- shmem_addr_accessible.openmpi(3)
- shmem_short_g.openmpi(3)
- shmem_longdouble_put_nbi.openmpi(3)
- shmem_longlong_iget.openmpi(3)
- shmem_udcflush.openmpi(3)
- shmem_put32.openmpi(3)
- shmem_fence.openmpi(3)
- shmem_int_wait_until.openmpi(3)
- shmem_swap.openmpi(3)
- shmem_longlong_put.openmpi(3)
- shmem_alltoall64.openmpi(3)
- shmem_double_swap.openmpi(3)
- shmem_put128_nbi.openmpi(3)
- shmem_char_g.openmpi(3)
- shmem_float_fetch.openmpi(3)
- shmem_long_finc.openmpi(3)
- shmem_float_put_nbi.openmpi(3)
- shmem_int_max_to_all.openmpi(3)
- shmem_longdouble_prod_to_all.openmpi(3)
- shmem_longlong_g.openmpi(3)
- shmem_long_fetch.openmpi(3)
- shmem_long_and_to_all.openmpi(3)
- prte(5)
- shmem_barrier_all.openmpi(3)
- shmem_int_xor_to_all.openmpi(3)
- shmem_double_set.openmpi(3)
- shmem_get8_nbi.openmpi(3)
- shmem_short_wait_until.openmpi(3)
- shmem_float_put.openmpi(3)
- shmem_get64.openmpi(3)
- shmem_double_iput.openmpi(3)
- shmem_longlong_iput.openmpi(3)
- shmem_finalize.openmpi(3)
- shmem_alltoalls32.openmpi(3)
- shmem_double_max_to_all.openmpi(3)
- shmem_int_iput.openmpi(3)
- shmem_test_lock.openmpi(3)
- shmem_longlong_min_to_all.openmpi(3)
- shmem_get64_nbi.openmpi(3)
- shmem_long_set.openmpi(3)
- shmem_float_p.openmpi(3)
- shmem_longlong_add.openmpi(3)
- shmem_longdouble_iput.openmpi(3)
- shmem_iput128.openmpi(3)
- shmem_short_iget.openmpi(3)
- shmem_double_g.openmpi(3)
- shmem_long_wait_until.openmpi(3)
- shmem_wait.openmpi(3)
- shmem_longlong_p.openmpi(3)
- shmem_put32_nbi.openmpi(3)
- shmem_iget128.openmpi(3)
- shmem_longdouble_g.openmpi(3)
- shmem_long_p.openmpi(3)
- shmem_int_get_nbi.openmpi(3)
- shmem_my_pe.openmpi(3)
- shmem_int_and_to_all.openmpi(3)
- shmem_align.openmpi(3)
- shmem_n_pes.openmpi(3)
- shmem_get16_nbi.openmpi(3)
- shmem_int_or_to_all.openmpi(3)
- shmem_int_prod_to_all.openmpi(3)
- shmem_short_get.openmpi(3)
- _num_pes.openmpi(3)
- shmem_long_g.openmpi(3)
- shmem_short_get_nbi.openmpi(3)
- shmem_short_put.openmpi(3)
- shmem_int_finc.openmpi(3)
- shmem_iget32.openmpi(3)
- shmem_long_inc.openmpi(3)
- shmem_put8_nbi.openmpi(3)
- shmem_longlong_set.openmpi(3)
- shmem_short_min_to_all.openmpi(3)
- shmem_float_max_to_all.openmpi(3)
- shmem_longlong_xor_to_all.openmpi(3)
- shmem_double_iget.openmpi(3)
- shmem_float_get_nbi.openmpi(3)
- shmemalign.openmpi(3)
- shmem_double_put.openmpi(3)
- shfree.openmpi(3)
- shmem_barrier.openmpi(3)
- shmem_int_set.openmpi(3)
- shmem_put128.openmpi(3)
- shmem_double_sum_to_all.openmpi(3)
- shmem_longlong_wait.openmpi(3)
- shmem_longlong_prod_to_all.openmpi(3)
- shmem_int_cswap.openmpi(3)
- shmem_long_swap.openmpi(3)
- shmem_getmem_nbi.openmpi(3)
- shmem_long_wait.openmpi(3)
- prte(1)
- shmem_short_or_to_all.openmpi(3)
- shmem_double_p.openmpi(3)
- shmem_wait_until.openmpi(3)
- shmem_longdouble_get.openmpi(3)
- shmem_longlong_wait_until.openmpi(3)
- shmem_put64.openmpi(3)
- shmem_iput64.openmpi(3)
- shmem_int_swap.openmpi(3)
- shmem_complexf_prod_to_all.openmpi(3)
- shmem_longlong_put_nbi.openmpi(3)
- shmem_short_xor_to_all.openmpi(3)
- shmem_int_wait.openmpi(3)
- shmem_short_iput.openmpi(3)
- shmem_long_sum_to_all.openmpi(3)
- shmem_long_or_to_all.openmpi(3)
- shmem_float_get.openmpi(3)
- shmem_short_sum_to_all.openmpi(3)
- shmem_int_iget.openmpi(3)
- shmem_longdouble_get_nbi.openmpi(3)
- prte_info(1)
- shmem_longlong_max_to_all.openmpi(3)
- shmem_long_put.openmpi(3)
- shmem_float_prod_to_all.openmpi(3)
- shmem_short_p.openmpi(3)
- shmem_int_min_to_all.openmpi(3)
- shmem_broadcast32.openmpi(3)
- shmem_broadcast64.openmpi(3)
- shmem_long_get.openmpi(3)
- shmem_collect64.openmpi(3)
- mpisync(1)
- shmem_longdouble_p.openmpi(3)
- shmem_complexf_sum_to_all.openmpi(3)
- shmem_longlong_sum_to_all.openmpi(3)
- shmem_long_prod_to_all.openmpi(3)
- shmalloc.openmpi(3)
- shmem_complexd_prod_to_all.openmpi(3)
- shmem_alltoall32.openmpi(3)
- shmem_short_and_to_all.openmpi(3)
- shmem_malloc.openmpi(3)
- start_pes.openmpi(3)
- shmem_quiet.openmpi(3)
- shmem_double_put_nbi.openmpi(3)
- shmem_int_put.openmpi(3)
- shmem_float_iput.openmpi(3)
- shmem_longlong_or_to_all.openmpi(3)
- oshmem-wrapper-compiler(1)
- shmem_udcflush_line.openmpi(3)
- shmem_get128_nbi.openmpi(3)
- shmem_float_sum_to_all.openmpi(3)
- shmem_fcollect64.openmpi(3)
- shmem_longlong_finc.openmpi(3)
- shmem_clear_cache_inv.openmpi(3)
- shmem_int_put_nbi.openmpi(3)
- shmem_putmem_nbi.openmpi(3)
- pterm.openmpi(1)
- shmem_long_iget.openmpi(3)
- shmem_longlong_fetch.openmpi(3)
- shmem_put64_nbi.openmpi(3)
- shmem_get32_nbi.openmpi(3)
- shmem_char_put_nbi.openmpi(3)
- shmem_init.openmpi(3)
- shmem_char_put.openmpi(3)
- _my_pe.openmpi(3)
- ompi-wrapper-compiler(1)
- shmem_double_min_to_all.openmpi(3)
- shmem_alltoalls64.openmpi(3)
- shmem_char_get.openmpi(3)
- shmem_short_prod_to_all.openmpi(3)
- shmem_put16_nbi.openmpi(3)
- shmem_int_sum_to_all.openmpi(3)
- shmem_putmem.openmpi(3)
- shmem_clear_cache_line_inv.openmpi(3)
- shmem_short_max_to_all.openmpi(3)
- shmem_short_put_nbi.openmpi(3)
- shmem_longlong_and_to_all.openmpi(3)
- shmem_int_get.openmpi(3)
- shmem_int_inc.openmpi(3)
- shmem_short_wait.openmpi(3)
- shmem_set_cache_line_inv.openmpi(3)
- shmem_realloc.openmpi(3)
- shmem_getmem.openmpi(3)
- shmem_char_get_nbi.openmpi(3)
- intro_shmem.openmpi(3)
- shmem_long_put_nbi.openmpi(3)
- shmem_get128.openmpi(3)
- shmem_float_min_to_all.openmpi(3)
- shmem_set_lock.openmpi(3)
- shmem_double_get.openmpi(3)
- shmem_set_cache_inv.openmpi(3)
- shmem_longlong_get_nbi.openmpi(3)
- shmem_info_get_version.openmpi(3)
- shmem_collect32.openmpi(3)
- shmem_clear_lock.openmpi(3)
- shmem_complexd_sum_to_all.openmpi(3)
- shmem_longlong_fadd.openmpi(3)
- shmem_longdouble_max_to_all.openmpi(3)
- shmem_int_fadd.openmpi(3)
- shmem_int_p.openmpi(3)
- prted(1)
- shmem_long_fadd.openmpi(3)
- shmem_long_iput.openmpi(3)
- shmem_int_g.openmpi(3)
- shmem_global_exit.openmpi(3)
- shmem_int_add.openmpi(3)
- shmem_free.openmpi(3)
- shmem_double_prod_to_all.openmpi(3)
- shmem_fcollect32.openmpi(3)
- shmem_iget64.openmpi(3)
- shmem_long_add.openmpi(3)
- shmem_longlong_get.openmpi(3)
- shmem_pe_accessible.openmpi(3)
- shmem_float_g.openmpi(3)
- shmem_long_cswap.openmpi(3)
- shmem_long_min_to_all.openmpi(3)
- shmem_longdouble_min_to_all.openmpi(3)
- shrealloc.openmpi(3)
- shmem_float_set.openmpi(3)
- shmem_ptr.openmpi(3)
- shmem_longdouble_put.openmpi(3)
- shmem_double_fetch.openmpi(3)
- shmem_float_iget.openmpi(3)
- shmem_longdouble_iget.openmpi(3)
- shmem_long_get_nbi.openmpi(3)
- prun(1)
- shmem_long_max_to_all.openmpi(3)
- shmem_char_p.openmpi(3)
- shmem_info_get_name.openmpi(3)
- shmem_double_get_nbi.openmpi(3)
- shmem_int_fetch.openmpi(3)
- shmem_longdouble_sum_to_all.openmpi(3)
apt-get install openmpi-doc
Manual
SHMEM_LONG_WAIT_UNTIL
SYNOPSISDESCRIPTION
EXAMPLES
COPYRIGHT
shmem_int_wait (3), shmem_int_wait (3)_until, shmem_int4_wait(3), shmem_int4_wait(3)_until, shmem_int8_wait(3), shmem_int8_wait(3)_until, shmem_long_wait (3), shmem_long_wait (3)_until, shmem_longlong_wait (3), shmem_longlong_wait (3)_until, shmem_short_wait (3), shmem_short_wait (3)_until, shmem_wait (3), shmem_wait (3)_until - Waits for a variable on the local processing element (PE) to change
SYNOPSIS
C or C++:
#include <mpp/shmem.h>
void shmem_int_wait(volatile int *var, int value)
void shmem_int_wait_until(volatile int *var, int cond, int value)
void shmem_long_wait(volatile long *var, long value)
void shmem_long_wait_until(volatile long *var, int cond, long value)
void shmem_longlong_wait(volatile long long *var, long long value)
void
shmem_longlong_wait_until(volatile long long *var, int cond,
long long value)
void shmem_short_wait(volatile short *var, short value)
void
shmem_short_wait_until(volatile short *var, int cond,
short value)
void shmem_wait(volatile long *ivar, long cmp_value)
void shmem_wait_until(volatile long *ivar, int cmp, long value)
Fortran:
INCLUDE "mpp/shmem.fh"
CALL SHMEM_INT4_WAIT(ivar, cmp_value)
CALL SHMEM_INT4_WAIT_UNTIL(ivar, cmp, cmp_value)
CALL SHMEM_INT8_WAIT(ivar, cmp_value)
CALL SHMEM_INT8_WAIT_UNTIL(ivar, cmp, cmp_value)
CALL SHMEM_WAIT(ivar, cmp_value)
CALL SHMEM_WAIT_UNTIL(ivar, cmp, cmp_value)
DESCRIPTION
shmem_wait and shmem_wait_until wait for ivar to be changed by a remote write or atomic swap issued by a different processor. These routines can be used for point-to- point directed synchronization. A call to shmem_wait does not return until some other processor writes a value, not equal to cmp_value, into ivar on the waiting processor. A call to shmem_wait_until does not return until some other processor changes ivar to satisfy the condition implied by cmp and cmp_value. This mechanism is useful when a processor needs to tell another processor that it has completed some action.
The arguments are as follows:
|
target |
The remotely accessible integer data object to be updated on the remote PE. If you are using C/C++, the type of target should match that implied in the SYNOPSIS section. If you are using the Fortran compiler, it must be of type integer with an element size of 4 bytes for SHMEM_INT4_ADD and 8 bytes for SHMEM_INT8_ADD. |
||
|
value |
The value to be atomically added to target. If you are using C/C++, the type of value should match that implied in the SYNOPSIS section. If you are using Fortran, it must be of type integer with an element size of target. |
||
|
pe |
An integer that indicates the PE number upon which target is to be updated. If you are using Fortran, it must be a default integer value. |
||
|
ivar |
A remotely accessible integer variable that is being updated by another PE. If you are using C/C++, the type of ivar should match that implied in the SYNOPSIS section. If you are using Fortran, ivar must be a specific sized integer type according to the function being called, as follows: |
shmem_wait , shmem_wait_until :** default INTEGER
shmem_int4_wait, shmem_int4_wait_until:** INTEGER*4
shmem_int8_wait, shmem_int8_wait_until:** INTEGER*8
|
cmp |
The compare operator that compares ivar with cmp_value. cmp must be of type integer. If you are using Fortran, it must be of default kind. If you are using C/C++, the type of cmp should match that implied in the SYNOPSIS section. The following cmp values are supported: |
SHMEM_CMP_EQ
Equal
SHMEM_CMP_NE
Not equal
SHMEM_CMP_GT
Greater than
SHMEM_CMP_LE
Less than or equal to
SHMEM_CMP_LT
Less than
SHMEM_CMP_GE
Greater than or equal to
cmp_value
cmp_value must be of type integer. If you are using C/C++, the type of cmp_value should match thatimplied in the SYNOPSIS section. If you are using Fortran, cmp_value must be an integer of the same size and kind as ivar. The shmem_wait routines return when ivar is no longer equal to cmp_value. The shmem_wait_until routines return when the compare condition is true. The compare condition is defined by the ivar argument compared with the cmp_value using the comparison operator, cmp.
EXAMPLES
Example 1: The following call returns when variable ivar is not equal to 100:
INTEGER*8 IVAR
CALL SHMEM_INT8_WAIT(IVAR, INT8(100))
Example 2: The following call to SHMEM_INT8_WAIT_UNTIL is equivalent to the call to SHMEM_INT8_WAIT in example 1:
INTEGER*8 IVAR
CALL SHMEM_INT8_WAIT_UNTIL(IVAR, SHMEM_CMP_NE, INT8(100))
Example 3: The following C/C++ call waits until the sign bit in ivar is set by a transfer from a remote PE:
int ivar;
shmem_int_wait_until(&ivar, SHMEM_CMP_LT, 0);
Example 4: The following Fortran example is in the context of a subroutine:
SUBROUTINE
EXAMPLE()
INTEGER FLAG_VAR
COMMON/FLAG/FLAG_VAR
. . .
FLAG_VAR = FLAG_VALUE ! initialize the event variable
. . .
IF (FLAG_VAR .EQ. FLAG_VALUE) THEN
CALL SHMEM_WAIT(FLAG_VAR, FLAG_VALUE)
ENDIF
FLAG_VAR = FLAG_VALUE ! reset the event variable for next
time
. . .
END
SEE ALSO:
intro_shmem (3) shmem_put (3)
COPYRIGHT
2003-2025, The Open MPI Community