MPI_SESSION_FINALIZE(3)
πΈ NAME πΈ
okay bestie, welcome to MPI_SESSION_FINALIZE(3) β that's the Open MPI manual page, and it's all about MPI_Session_finalize, the call that releases all MPI state associated with a session. yes she's the closer, the one who turns off the lights π
β¨ SYNTAX β¨
π C Syntax
#include <mpi.h>
int MPI_Session_finalize(MPI_Session *session)
π Fortran Syntax
USE MPI
! or the older form: INCLUDE 'mpif.h'
MPI_SESSION_FINALIZE(SESSION, IERROR)
INTEGER SESSION, IERROR
π Fortran 2008 Syntax
USE mpi_f08
MPI_Session_finalize(session, ierror)
TYPE(MPI_Session), INTENT(IN) :: session
INTEGER, OPTIONAL, INTENT(OUT) :: ierror
π«Ά INPUT PARAMETERS π«Ά
- session β the session to be finalized, as a handle. that's the one getting the glow-down bestie β¨
π OUTPUT PARAMETERS π
- ierror β Fortran only: Error status (integer). yeah, Fortran girlies get their error as an argument, not a return value π
π DESCRIPTION π
MPI_Session_finalize releases all MPI state associated with the supplied session. Every instantiated session must be finalized using MPI_Session_finalize β no leaving sessions open, that's so not the vibe. The handle session is set to MPI_SESSION_NULL by the call. iconic behavior honestly.
Multiple sessions can be created and destroyed during the lifetime of an MPI process. and this is different than the MPI world model, which can be initialized at most exactly once (and then subsequently finalized) during the lifetime of an MPI process. literally one and done vs. the session model's cute little revolving door π¦
π NOTES π
Before an MPI process invokes MPI_Session_finalize, the process must perform all MPI calls needed to complete its involvement in MPI communications: it must locally complete all MPI operations that it initiated, and it must execute matching calls needed to complete MPI communications initiated by other processes. no ghosting your pending calls bestie, finish your conversations first π
The call to MPI_Session_finalize does not free objects created by MPI calls; these objects are freed using MPI_XXX_FREE calls. so don't expect this one to clean your room for you, she just locks the door.
MPI_Session_finalize may be synchronizing on any or all of the groups associated with communicators, windows, or files derived from the session and not disconnected, freed, or closed, respectively, before the call to MPI_Session_finalize procedure.
MPI_Session_finalize behaves as if all such synchronizations occur concurrently. β‘ all at once, no queue, no line.
As MPI_Comm_free may mark a communicator for freeing later, MPI_Session_finalize may be synchronizing on the group associated with a communicator that is only freed (with MPI_Comm_free) rather than disconnected (with MPI_Comm_disconnect). so like, it can sync on a comm that's in the "freed later" holding pattern, not just one that got a full disconnect. noted π
π 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. yep, two different love languages π«
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. that's a whole chain of command and every link matters π
Open MPI includes three predefined error handlers that can be used:
MPI_ERRORS_ARE_FATALβ Causes the program to abort all connected MPI processes. yeah. everyone. all at once. π₯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 ifMPI_Abortwas called on that communicator. If called on a window or file, acts as ifMPI_Abortwas 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. so session version is the lowkey one, just the local process π«ΆMPI_ERRORS_RETURNβ Returns an error code to the application. she just hands you the receipt π§Ύ
MPI applications can also implement their own error handlers by calling:
MPI_Comm_create_errhandlerthenMPI_Comm_set_errhandlerMPI_File_create_errhandlerthenMPI_File_set_errhandlerMPI_Session_create_errhandlerthenMPI_Session_set_errhandleror atMPI_Session_initMPI_Win_create_errhandlerthenMPI_Win_set_errhandler
Note that MPI does not guarantee that an MPI program can continue past an error. π¨ like, truly, it might just be over.
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_InitMPI_InitializedMPI_Init_threadMPI_FinalizeMPI_FinalizedMPI_Session_init
π Copyright π
2003-2026, The Open MPI Community
okay that's the whole page, no notes π this was the Open MPI MPI_SESSION_FINALIZE(3) man page, dated Sep 10, 2026, and you absolutely ate it. go forth and finalize responsibly, bestie β MPI_SESSION_NULL era begins now β¨ππ¦π
π¦ where this page comes from
- ubuntu stonking: openmpi-doc 5.0.10-6 Β· other
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms