OpenMP* Fortran Compiler Directive: Identifies synchronization points at which the implementation must provide a consistent view of memory.
Syntax
c$OMP FLUSH [(list)]
c
Is one of the following: C (or c), !, or * (see Syntax Rules for Compiler Directives).
list
Is the name of one or more variables to be flushed. Names must be separated by commas.
Description
The FLUSH directive must appear at the precise point in the code at which the synchronization is required. To avoid flushing all variables, specify a list.
Thread-visible variables are written back to memory at the point at which this directive appears. Modifications to thread-visible variables are visible to all threads after this point. Subsequent reads of thread-visible variables fetch the latest copy of the data.
Thread-visible variables include the following data items:
The FLUSH directive is implied for the following directives (unless the NOWAIT keyword is used):
See Also
OpenMP Fortran Compiler Directives
Example
The following example uses the FLUSH directive for point-to-point synchronization between pairs of threads:
c$OMP PARALLEL DEFAULT(PRIVATE) SHARED(ISYNC)
IAM = OMP_GET_THREAD_NUM( )
ISYNC(IAM) = 0
c$OMP BARRIER
CALL WORK( )
C I AM DONE WITH MY WORK, SYNCHRONIZE WITH MY NEIGHBOR
ISYNC(IAM) = 1
c$OMP FLUSH(ISYNC)
C WAIT TILL NEIGHBOR IS DONE
DO WHILE (ISYNC(NEIGH) .EQ. 0)
c$OMP FLUSH(ISYNC)
END DO
c$OMP END PARALLEL