85 строки
2.2 KiB
Plaintext
85 строки
2.2 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\\_QUIET" "3" "#OMPI_DATE#" "#PACKAGE_VERSION#" "#PACKAGE_NAME#"
|
||
|
.SH NAME
|
||
|
|
||
|
\fIshmem_quiet\fP(3)
|
||
|
\- Waits for completion of all outstanding remote writes issued by a
|
||
|
processing element (PE).
|
||
|
.SH SYNOPSIS
|
||
|
|
||
|
C or C++:
|
||
|
.Vb
|
||
|
#include <mpp/shmem.h>
|
||
|
|
||
|
void shmem_quiet(void);
|
||
|
.Ve
|
||
|
Fortran:
|
||
|
.Vb
|
||
|
CALL SHMEM_QUIET
|
||
|
.Ve
|
||
|
.SH DESCRIPTION
|
||
|
|
||
|
shmem_quiet ensures ordering of put (remote write) operations. All put operations issued to
|
||
|
any processing element (PE) prior to the call to shmem_quiet are guaranteed to be visible to
|
||
|
all other PEs no later than any subsequent memory load or store, remote put or get, or
|
||
|
synchronization operations that follow the call to shmem_quiet.
|
||
|
.SH NOTES
|
||
|
|
||
|
shmem_quiet is most useful as a way of ensuring ordering of delivery of several put
|
||
|
operations. For example, you might use shmem_quiet to await delivery of a block of data
|
||
|
before issuing another put, which sets a completion flag on another PE.
|
||
|
.br
|
||
|
shmem_quiet is not usually needed if \fIshmem_barrier_all\fP(3)
|
||
|
or
|
||
|
\fIshmem_barrier\fP(3)
|
||
|
are called. The barrier routines all wait for the completion of
|
||
|
outstanding remote writes (puts).
|
||
|
.SH EXAMPLES
|
||
|
|
||
|
.Vb
|
||
|
PROGRAM COMPFLAG
|
||
|
INCLUDE "mpp/shmem.fh"
|
||
|
|
||
|
INTEGER FLAG_VAR, ARRAY(100), RECEIVER, SENDER
|
||
|
COMMON/FLAG/FLAG_VAR
|
||
|
COMMON/DATA/ARRAY
|
||
|
INTRINSIC MY_PE
|
||
|
|
||
|
FLAG_VAR = 0
|
||
|
CALL SHMEM_BARRIER_ALL ! wait for FLAG_VAR to be initialized
|
||
|
SENDER = 0 ! PE 0 sends the data
|
||
|
RECEIVER = 1 ! PE 1 receives the data
|
||
|
|
||
|
IF (MY_PE() .EQ. 0) THEN
|
||
|
ARRAY = 33
|
||
|
CALL SHMEM_PUT(ARRAY, ARRAY, 100, RECEIVER) ! start sending data
|
||
|
CALL SHMEM_QUIET ! wait for delivery
|
||
|
CALL SHMEM_PUT(FLAG_VAR, 1, 1, RECEIVER) ! send completion flag
|
||
|
ELSE IF (MY_PE() .EQ. RECEIVER) THEN
|
||
|
CALL SHMEM_UDCFLUSH
|
||
|
CALL SHMEM_WAIT(FLAG_VAR, 0)
|
||
|
PRINT *,ARRAY ! ARRAY has been delivered
|
||
|
ENDIF
|
||
|
END
|
||
|
.Ve
|
||
|
.SH SEE ALSO
|
||
|
|
||
|
\fIintro_shmem\fP(3),
|
||
|
\fIshmem_barrier\fP(3),
|
||
|
\fIshmem_barrier_all\fP(3),
|
||
|
\fIshmem_fence\fP(3),
|
||
|
\fIshmem_put\fP(3),
|
||
|
\fIshmem_wait\fP(3)
|