finalize_mpi Subroutine

public subroutine finalize_mpi(params)

@brief Subroutine for finalizing MPI communications. @details This subroutine finalizes all the MPI communications and looks for errors durignt this procces.

@param[in] params Core KORC simulation parameters. @param mpi_process_finalized Flag indicating whether an individual MPI process was finalized correctly. @param mpierr MPI error status.

Arguments

Type IntentOptional AttributesName
type(KORC_PARAMS), intent(in) :: params

Calls

proc~~finalize_mpi~~CallsGraph proc~finalize_mpi finalize_mpi mpi_finalized mpi_finalized proc~finalize_mpi->mpi_finalized mpi_finalize mpi_finalize proc~finalize_mpi->mpi_finalize mpi_barrier mpi_barrier proc~finalize_mpi->mpi_barrier

Called by

proc~~finalize_mpi~~CalledByGraph proc~finalize_mpi finalize_mpi proc~finalize_communications finalize_communications proc~finalize_communications->proc~finalize_mpi program~main main program~main->proc~finalize_communications

Contents

Source Code


Source Code

  subroutine finalize_mpi(params)
    TYPE(KORC_PARAMS), INTENT(IN) 	:: params
    LOGICAL 						:: mpi_process_finalized = .FALSE.
    INTEGER 						:: mpierr

    call MPI_BARRIER(MPI_COMM_WORLD,mpierr)

    call MPI_FINALIZE(mpierr)

    call MPI_FINALIZED(mpi_process_finalized,mpierr)

    if (.NOT.mpi_process_finalized) then
       write(output_unit_write,'(/,"* * * * * * * COMMUNICATIONS * * * * * * *")')
       write(output_unit_write,'(/," ERROR: MPI not finalized well. MPI process: ",I5)') params%mpi_params%rank
       write(output_unit_write,'(/,"* * * * * * * * * ** * * * * * * * * * * *")')
    end if
  end subroutine finalize_mpi