MPI_WIN_CREATE_DYNAMIC(3)			     Open MPI				 MPI_WIN_CREATE_DYNAMIC(3)

MPI_Win_create_dynamic — One-sided MPI call that returns a window object for RMA operations.

SYNTAX
   C Syntax
	  #include <mpi.h>

	  MPI_Win_create_dynamic(MPI_Info info, MPI_Comm comm, MPI_Win *win)

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

   Fortran 2008 Syntax
	  USE mpi_f08
	  MPI_Win_create_dynamic(info, comm, win, ierror)
	       TYPE(MPI_Info), INTENT(IN) :: info
	       TYPE(MPI_Comm), INTENT(IN) :: comm
	       TYPE(MPI_Win), INTENT(OUT) :: win
	       INTEGER, OPTIONAL, INTENT(OUT) :: ierror

INPUT PARAMETERS
       • info: Info argument (handle).

       • comm: Communicator (handle).

OUTPUT PARAMETERS
       • win: Window object returned by the call (handle).

       • ierror: Fortran only: Error status (integer).

DESCRIPTION
       MPI_Win_create_dynamic  is  a  one-sided MPI communication collective call executed by all processes in the
       group of comm. It returns a window object without memory attached that can be used by  these  processes	to
       perform RMA operations.

       A  window  created  with MPI_Win_create_dynamic requires the target_disp argument for all RMA communication
       functions to be the actual address at the target.

       The following info keys are supported:

       no_locks
	      If set to true, then the implementation may assume that the local window is never locked (by a  call
	      to   MPI_Win_lock	  <#mpi-win-lock>   or	MPI_Win_lock_all).  Setting  this  value  if  only  active
	      synchronization may allow the implementation to enable certain optimizations.

       accumulate_ordering
	      By default, accumulate operations from one initiator  to	one  target  on	 the  same  window  memory
	      location	are  strictly  ordered. If the info key accumulate_ordering is set to none, no ordering of
	      accumulate operations guaranteed. They key can also be a comma-separated list of required	 orderings
	      consisting  of  rar,  war, raw, and waw for read-after-read, write-after-read, read-after-write, and
	      write-after-write, respectively. Looser ordering	constraints  are  likely  to  result  in  improved
	      performance.

       accumulate_ops
	      If  set  to same_op, the implementation will assume that all concurrent accumulate calls to the same
	      target address will use the same operation. If set to same_op_no_op, then	 the  implementation  will
	      assume  that  all concurrent accumulate calls to the same target address will use the same operation
	      or MPI_NO_OP. The default is same_op_no_op.

NOTES
       Since dynamically attaching memory to a window is a local operation, one	 has  to  communicate  the  actual
       address at the target using MPI_Get_address <#mpi-get-address> and some communication.

       Dynamic	memory does not have any disp_unit associated and requires correct offset calculations with proper
       type handling.

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>/MPI_Init_thread  <#mpi-init-thread>,
       after  MPI_Finalize  <#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	<#
       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>/MPI_Comm_spawn_multiple	<#
       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 <#mpi-abort> was called on that communicator. If called
	 on a window or file, acts as if MPI_Abort <#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	 <#mpi-comm-create-errhandler>	   then	    MPI_Comm_set_errhandler	<#
	 mpi-comm-set-errhandler>

       • MPI_File_create_errhandler	<#mpi-file-create-errhandler>	  then	   MPI_File_set_errhandler	<#
	 mpi-file-set-errhandler>

       • MPI_Session_create_errhandler	 <#mpi-session-create-errhandler>   then   MPI_Session_set_errhandler	<#
	 mpi-session-set-errhandler> or at MPI_Session_init <#mpi-session-init>

       • MPI_Win_create_errhandler	<#mpi-win-create-errhandler>	  then	    MPI_Win_set_errhandler	<#
	 mpi-win-set-errhandler>

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

       See the MPI man page <#open-mpi> for a full list of MPI error codes <#open-mpi-errors>.

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

       See also:

	  • MPI_Win_attach <#mpi-win-attach>

	  • MPI_Win_detach <#mpi-win-detach>

	  • MPI_Get_address <#mpi-get-address>

Copyright
       2003-2026, The Open MPI Community

						   Mar 05, 2026				 MPI_WIN_CREATE_DYNAMIC(3)
