1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
|
.. _shmem_quiet:
shmem_quiet
===========
.. include_body
:ref:`shmem_quiet`\ (3) - Waits for completion of all outstanding remote
writes issued by a processing element (PE).
SYNOPSIS
--------
C or C++:
.. code-block:: c++
#include <mpp/shmem.h>
void shmem_quiet(void)
Fortran:
.. code-block:: fortran
CALL SHMEM_QUIET
DESCRIPTION
-----------
:ref:`shmem_quiet` ensures ordering of put (remote write) operations. All put
operations issued to any processing element (PE) prior to the call to
:ref:`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 :ref:`shmem_quiet`.
NOTES
-----
| :ref:`shmem_quiet` is most useful as a way of ensuring ordering of delivery
of several put operations. For example, you might use :ref:`shmem_quiet` to
await delivery of a block of data before issuing another put, which
sets a completion flag on another PE.
| :ref:`shmem_quiet` is not usually needed if :ref:`shmem_barrier_all`\ (3) or
:ref:`shmem_barrier`\ (3) are called. The barrier routines all wait for the
completion of outstanding remote writes (puts).
EXAMPLES
--------
::
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
.. seealso::
*intro_shmem*\ (3) :ref:`shmem_barrier`\ (3) :ref:`shmem_barrier_all`\ (3)
*shmem_fence*\ (3) *shmem_put*\ (3) *shmem_wait*\ (3)
|