ea7c86c9b4
These man pages to OpenSHMEM API are received from openshmem.org and ported with minimum modifications. Thanks Tony Curtis for sharing man files. Signed-off-by: Igor Ivanov <Igor.Ivanov@itseez.com>
206 строки
5.4 KiB
Plaintext
206 строки
5.4 KiB
Plaintext
.\" -*- nroff -*-
|
|
.\" Copyright (c) 2015 University of Houston. All rights reserved.
|
|
.\" Copyright (c) 2015 Mellanox Technologies, Inc.
|
|
.\" $COPYRIGHT$
|
|
.de Vb
|
|
.ft CW
|
|
.nf
|
|
..
|
|
.de Ve
|
|
.ft R
|
|
|
|
.fi
|
|
..
|
|
.TH "SHMEM\\_WAIT" "3" "#OMPI_DATE#" "#PACKAGE_VERSION#" "#PACKAGE_NAME#"
|
|
.SH NAME
|
|
|
|
\fIshmem_int_wait\fP(3),
|
|
\fIshmem_int_wait\fP(3)_until,
|
|
\fIshmem_int4_wait\fP(3),
|
|
\fIshmem_int4_wait\fP(3)_until,
|
|
\fIshmem_int8_wait\fP(3),
|
|
\fIshmem_int8_wait\fP(3)_until,
|
|
\fIshmem_long_wait\fP(3),
|
|
\fIshmem_long_wait\fP(3)_until,
|
|
\fIshmem_longlong_wait\fP(3),
|
|
\fIshmem_longlong_wait\fP(3)_until,
|
|
\fIshmem_short_wait\fP(3),
|
|
\fIshmem_short_wait\fP(3)_until,
|
|
\fIshmem_wait\fP(3),
|
|
\fIshmem_wait\fP(3)_until
|
|
\- Waits for a variable on the local processing element (PE) to change
|
|
.SH SYNOPSIS
|
|
|
|
C or C++:
|
|
.Vb
|
|
#include <mpp/shmem.h>
|
|
|
|
void shmem_int_wait(int *var, int value);
|
|
|
|
void shmem_int_wait_until(int *var, int cond, int value);
|
|
|
|
void shmem_long_wait(long *var, long value);
|
|
|
|
void shmem_long_wait_until(long *var, int cond, long value);
|
|
|
|
void shmem_longlong_wait(long long *var, long long value);
|
|
|
|
void shmem_longlong_wait_until(long long *var, int cond,
|
|
long long value);
|
|
|
|
void shmem_short_wait(short *var, short value);
|
|
|
|
void shmem_short_wait_until(short *var, int cond,
|
|
short value);
|
|
|
|
void shmem_wait(long *ivar, long cmp_value);
|
|
|
|
void shmem_wait_until(long *ivar, int cmp, long value);
|
|
.Ve
|
|
Fortran:
|
|
.Vb
|
|
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)
|
|
.Ve
|
|
.SH DESCRIPTION
|
|
|
|
shmem_wait and shmem_wait_until wait for \fBivar\fP
|
|
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 \fBivar\fP
|
|
on the waiting
|
|
processor. A call to shmem_wait_until does not return until some other processor changes
|
|
\fBivar\fP
|
|
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.
|
|
.PP
|
|
The arguments are as follows:
|
|
.TP
|
|
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.
|
|
.TP
|
|
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.
|
|
.TP
|
|
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.
|
|
.TP
|
|
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:
|
|
.RS
|
|
.TP
|
|
\fBshmem_wait, shmem_wait_until:\fP default INTEGER
|
|
.TP
|
|
\fBshmem_int4_wait, shmem_int4_wait_until:\fP INTEGER*4
|
|
.TP
|
|
\fBshmem_int8_wait, shmem_int8_wait_until:\fP INTEGER*8
|
|
.RE
|
|
.RS
|
|
.PP
|
|
.RE
|
|
.TP
|
|
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:
|
|
.RS
|
|
.TP
|
|
SHMEM_CMP_EQ
|
|
Equal
|
|
.TP
|
|
SHMEM_CMP_NE
|
|
Not equal
|
|
.TP
|
|
SHMEM_CMP_GT
|
|
Greater than
|
|
.TP
|
|
SHMEM_CMP_LE
|
|
Less than or equal to
|
|
.TP
|
|
SHMEM_CMP_LT
|
|
Less than
|
|
.TP
|
|
SHMEM_CMP_GE
|
|
Greater than or equal to
|
|
.RE
|
|
.RS
|
|
.PP
|
|
.RE
|
|
.TP
|
|
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.
|
|
.PP
|
|
.SH EXAMPLES
|
|
|
|
\fBExample 1:\fP
|
|
The following call returns when variable ivar is not equal to 100:
|
|
.Vb
|
|
INTEGER*8 IVAR
|
|
|
|
CALL SHMEM_INT8_WAIT(IVAR, INT8(100))
|
|
.Ve
|
|
\fBExample 2:\fP
|
|
The following call to SHMEM_INT8_WAIT_UNTIL is equivalent to the
|
|
call to SHMEM_INT8_WAIT in example 1:
|
|
.Vb
|
|
INTEGER*8 IVAR
|
|
|
|
CALL SHMEM_INT8_WAIT_UNTIL(IVAR, SHMEM_CMP_NE, INT8(100))
|
|
.Ve
|
|
\fBExample 3:\fP
|
|
The following C/C++ call waits until the sign bit in ivar is set by a
|
|
transfer from a remote PE:
|
|
.Vb
|
|
int ivar;
|
|
|
|
shmem_int_wait_until(&ivar, SHMEM_CMP_LT, 0);
|
|
.Ve
|
|
\fBExample 4:\fP
|
|
The following Fortran example is in the context of a subroutine:
|
|
.Vb
|
|
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
|
|
.Ve
|
|
.SH SEE ALSO
|
|
|
|
\fIintro_shmem\fP(3),
|
|
\fIshmem_put\fP(3)
|