MPI_WAITALL(3)					     Open MPI					    MPI_WAITALL(3)

MPI_Waitall — Waits for all given communications to complete.

SYNTAX
   C Syntax
	  #include <mpi.h>

	  int MPI_Waitall(int count, MPI_Request array_of_requests[],
	       MPI_Status *array_of_statuses)

   Fortran Syntax
	  USE MPI
	  ! or the older form: INCLUDE 'mpif.h'
	  MPI_WAITALL(COUNT, ARRAY_OF_REQUESTS, ARRAY_OF_STATUSES, IERROR)
	       INTEGER COUNT, ARRAY_OF_REQUESTS(*)
	       INTEGER ARRAY_OF_STATUSES(MPI_STATUS_SIZE,*), IERROR

   Fortran 2008 Syntax
	  USE mpi_f08
	  MPI_Waitall(count, array_of_requests, array_of_statuses, ierror)
	       INTEGER, INTENT(IN) :: count
	       TYPE(MPI_Request), INTENT(INOUT) :: array_of_requests(count)
	       TYPE(MPI_Status) :: array_of_statuses(*)
	       INTEGER, OPTIONAL, INTENT(OUT) :: ierror

INPUT PARAMETERS
       • count: Lists length (integer).

       • array_of_requests: Array of requests (array of handles).

OUTPUT PARAMETERS
       • array_of_statuses: Array of status objects (array of status).

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

DESCRIPTION
       Blocks  until all communication operations associated with active handles in the list complete, and returns
       the status of all these operations (this includes the case where no handle in the  list	is  active).  Both
       arrays  have  the  same	number	of  valid entries. The ith entry in array_of_statuses is set to the return
       status of the ith operation.  Requests that  were  created  by  nonblocking  communication  operations  are
       deallocated,  and  the corresponding handles in the array are set to MPI_REQUEST_NULL. The list may contain
       null or inactive handles. The call sets to empty the status of each such entry.

       The error-free execution of MPI_Waitall(count, array_of_requests, array_of_statuses) has the same effect as
       the  execution  of  MPI_Wait(&array_of_request[i],  &array_of_statuses[i]),  for	 i=0,…,count-1,	 in   some
       arbitrary order. MPI_Waitall with an array of length 1 is equivalent to MPI_Wait <#mpi-wait>.

       When  one  or more of the communications completed by a call to MPI_Waitall fail, it is desirable to return
       specific information on each communication. The function MPI_Waitall will return in  such  case	the  error
       code MPI_ERR_IN_STATUS and will set the error field of each status to a specific error code. This code will
       be  MPI_SUCCESS	if  the	 specific  communication  completed;  it will be another specific error code if it
       failed; or it can be MPI_ERR_PENDING if it has neither failed nor completed. The function MPI_Waitall  will
       return  MPI_SUCCESS  if	no  request had an error, or will return another error code if it failed for other
       reasons (such as invalid arguments). In such cases, it will not update the error fields of the statuses.

       If your application does not need to examine the array_of_statuses field, you can save resources	 by  using
       the  predefined	constant  MPI_STATUSES_IGNORE  can  be	used  as a special value for the array_of_statuses
       argument.

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.

       For  each  invocation  of  MPI_Waitall,	if  one or more requests generate an MPI error, only the first MPI
       request that caused an error will be passed to its corresponding error handler.	No  other  error  handlers
       will  be invoked (even if multiple requests generated errors). However, all requests that generate an error
       will have a relevant error code set in the corresponding status.MPI_ERROR field (unless MPI_STATUSES_IGNORE
       was used).

       If the invoked error handler allows MPI_Waitall to return to the caller, the value  MPI_ERR_IN_STATUS  will
       be returned in the C and Fortran bindings.

       See also:

	  • MPI_Comm_set_errhandler <#mpi-comm-set-errhandler>

	  • MPI_File_set_errhandler <#mpi-file-set-errhandler>

	  • MPI_Test <#mpi-test>

	  • MPI_Testall <#mpi-testall>

	  • MPI_Testany <#mpi-testany>

	  • MPI_Testsome <#mpi-testsome>

	  • MPI_Wait <#mpi-wait>

	  • MPI_Waitany <#mpi-waitany>

	  • MPI_Waitsome <#mpi-waitsome>

	  • MPI_Win_set_errhandler <#mpi-win-set-errhandler>

Copyright
       2003-2026, The Open MPI Community

						   Mar 05, 2026					    MPI_WAITALL(3)
