plucky (3) MPI_Win_fence.openmpi.3.gz

Provided by: openmpi-doc_5.0.7-1_all bug

SYNTAX

   C Syntax
          #include <mpi.h>

          int MPI_Win_fence(int assert, MPI_Win win)

   Fortran Syntax
          USE MPI
          ! or the older form: INCLUDE 'mpif.h'
          MPI_WIN_FENCE(ASSERT, WIN, IERROR)
               INTEGER ASSERT, WIN, IERROR

   Fortran 2008 Syntax
          USE mpi_f08
          MPI_Win_fence(assert, win, ierror)
               INTEGER, INTENT(IN) :: assert
               TYPE(MPI_Win), INTENT(IN) :: win
               INTEGER, OPTIONAL, INTENT(OUT) :: ierror

INPUT PARAMETERS

assert: Program assertion (integer).

       • win: Window object (handle).

OUTPUT PARAMETER

ierror: Fortran only: Error status (integer).

DESCRIPTION

       MPI_Win_fence  synchronizes  RMA  calls  on  win.  The  call  is  collective on the group of win. All RMA
       operations on win originating at a given process and started before the fence call will complete at  that
       process  before  the  fence  call  returns.  They will be completed at their target before the fence call
       returns at the target. RMA operations on win started by a process  after  the  fence  call  returns  will
       access their target window only after MPI_Win_fence has been called by the target process.

       The  call  completes  an  RMA access epoch if it was preceded by another fence call and the local process
       issued RMA communication calls on win between these two calls. The call completes an RMA  exposure  epoch
       if  it  was  preceded  by  another fence call and the local window was the target of RMA accesses between
       these two calls. The call starts an RMA access epoch if it is followed by another fence call and  by  RMA
       communication  calls  issued  between  these  two fence calls. The call starts an exposure epoch if it is
       followed by another fence call and the local window is the target of RMA accesses between these two fence
       calls. Thus, the fence call is equivalent to calls to a subset of post, start, complete, wait.

       The assert argument is used to provide assertions on the context of

       the call that may be used for various optimizations. A value of assert ^ 0 is always valid. The following
       assertion value is supported:

       MPI_MODE_NOPRECEDE
              No local RMA calls have been issued before this fence. This assertion must be provided by  all  or
              no  members  of  the  group of the window. It may enable faster fence call by avoiding unnecessary
              synchronization.

       MPI_MODE_NOSTORE
              Informs that the local window was not updated by local stores or get calls in the preceding epoch.

       MPI_MODE_NOPUT
              Informs that the local window will not be updated by any put or accummulate calls in  the  ensuing
              epoch (until next fence call).

       MPI_MODE_NOSUCCEED
              No  local  RMA calls will be issued after this fence. This assertion must be provided by all or no
              members of the group of the window. It may  enable  faster  fence  call  by  avoiding  unnecessary
              synchronization.

NOTE

       Calls  to  MPI_Win_fence  should  both  precede  and  follow  calls  to  put,  get or accumulate that are
       synchronized with fence calls.

ERRORS

       Almost all MPI routines return an error value; C routines as  the  return  result  of  the  function  and
       Fortran routines in the last argument.

       Before  the  error  value  is  returned,  the current MPI error handler associated with the communication
       object (e.g., communicator, window, file) is called.  If no communication object is associated  with  the
       MPI  call,  then  the call is considered attached to MPI_COMM_SELF and will call the associated MPI error
       handler.  When  MPI_COMM_SELF  is  not  initialized   (i.e.,   before   MPI_Init/MPI_Init_thread,   after
       MPI_Finalize,  or  when using the Sessions Model exclusively) the error raises the initial error handler.
       The initial error handler can be changed by calling MPI_Comm_set_errhandler on MPI_COMM_SELF  when  using
       the  World  model,  or the mpi_initial_errhandler CLI argument to mpiexec or info key to MPI_Comm_spawn/‐
       MPI_Comm_spawn_multiple.  If no other appropriate error handler has been set, then the  MPI_ERRORS_RETURN
       error  handler  is  called for MPI I/O functions and the MPI_ERRORS_ABORT error handler is called for all
       other MPI functions.

       Open MPI includes three predefined error handlers that can be used:

       • MPI_ERRORS_ARE_FATAL Causes the program to abort all connected MPI processes.

       • MPI_ERRORS_ABORT An error handler that can be invoked on a communicator, window, file, or session. When
         called  on  a  communicator,  it  acts  as if MPI_Abort was called on that communicator. If called on a
         window or file, acts as if MPI_Abort was called on a communicator containing the group of processes  in
         the corresponding window or file. If called on a session, aborts only the local process.

       • MPI_ERRORS_RETURN Returns an error code to the application.

       MPI applications can also implement their own error handlers by calling:

       • MPI_Comm_create_errhandler then MPI_Comm_set_errhandlerMPI_File_create_errhandler then MPI_File_set_errhandlerMPI_Session_create_errhandler then MPI_Session_set_errhandler or at MPI_Session_initMPI_Win_create_errhandler then MPI_Win_set_errhandler

       Note that MPI does not guarantee that an MPI program can continue past an error.

       See the MPI man page for a full list of MPI error codes.

       See the Error Handling section of the MPI-3.1 standard for more information.

       SEE ALSO:MPI_Win_createMPI_Win_startMPI_Win_postMPI_Win_completeMPI_Win_wait

       2003-2025, The Open MPI Community

                                                  Feb 17, 2025                                  MPI_WIN_FENCE(3)