Find MAX/MIN/SUM scalar value across MPI ranks and bradcast result back to all MPI ranks.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(inout) | :: | scalar_int | |||
| character(len=3), | intent(in) | :: | parOP |
SUBROUTINE par_AllReduce_scalar_int(scalar_int,parOP) ! MODULES USE MODgvec_Globals, ONLY : wp IMPLICIT NONE !-------------------------------------------------------------------------------------------------------------------------------- ! INPUT VARIABLES INTEGER, INTENT(INOUT) :: scalar_int CHARACTER(LEN=3), INTENT(IN) :: parOP !-------------------------------------------------------------------------------------------------------------------------------- ! LOCAL VARIABLES INTEGER :: ierr # if MPI MPI_op_TYPE :: mpiOP !================================================================================================================================ ! BODY SELECT CASE(parOP) CASE('MAX') mpiOP=MPI_MAX CASE('MIN') mpiOP=MPI_MIN CASE('SUM') mpiOP=MPI_SUM END SELECT CALL MPI_AllReduce(MPI_IN_PLACE, scalar_int, 1, MPI_INTEGER, mpiOP, worldComm, ierr) # endif END SUBROUTINE par_AllReduce_scalar_int