MPIClass Module



Contents


Derived Types

type, public :: comment_

Components

TypeVisibility AttributesNameInitial
character(len=200), public :: comment

type, public :: MPI_

Components

TypeVisibility AttributesNameInitial
integer(kind=int32), public :: ierr
integer(kind=int32), public :: MyRank
integer(kind=int32), public :: PeTot
integer(kind=int32), public :: Comm1
integer(kind=int32), public :: Comm2
integer(kind=int32), public :: Comm3
integer(kind=int32), public :: Comm4
integer(kind=int32), public :: Comm5
integer(kind=int32), public :: start_id
integer(kind=int32), public :: end_id
integer(kind=int32), public, allocatable:: start_end_id(:)
integer(kind=int32), public, allocatable:: Comm(:)
integer(kind=int32), public, allocatable:: key(:)
integer(kind=int32), public, allocatable:: local_ID(:)
integer(kind=int32), public, allocatable:: Global_ID(:)
integer(kind=int32), public, allocatable:: Stack(:,:)
integer(kind=int32), public, allocatable:: localstack(:)
integer(kind=int32), public :: LapTimeStep
real(kind=real64), public :: stime
real(kind=real64), public :: etime
real(kind=real64), public :: laptime(1000)
character(len=200), public :: name
type(comment_), public :: comments(1000)
type(Graph_), public :: graph

Type-Bound Procedures

procedure, public :: Start => StartMPI
procedure, public :: initItr => initItrMPI
procedure, public :: Barrier => BarrierMPI
procedure, public, Pass :: readMPIInt
procedure, public, Pass :: readMPIReal
generic, public :: read => readMPIInt, readMPIReal
procedure, public, Pass :: BcastMPIInt
procedure, public, Pass :: BcastMPIIntVec
procedure, public, Pass :: BcastMPIIntArray
procedure, public, Pass :: BcastMPIReal
procedure, public, Pass :: BcastMPIRealVec
procedure, public, Pass :: BcastMPIRealArray
procedure, public, Pass :: BcastMPIChar
generic, public :: Bcast => BcastMPIInt, BcastMPIReal, BcastMPIChar, BcastMPIIntVec, BcastMPIIntArray, BcastMPIRealVec, BcastMPIRealArray
procedure, public, Pass :: GatherMPIInt
procedure, public, Pass :: GatherMPIReal
generic, public :: Gather => GatherMPIInt, GatherMPIReal
procedure, public, Pass :: ScatterMPIInt
procedure, public, Pass :: ScatterMPIReal
generic, public :: Scatter => ScatterMPIInt, ScatterMPIReal
procedure, public, Pass :: AllGatherMPIInt
procedure, public, Pass :: AllGatherMPIReal
procedure, public, Pass :: AllGatherMPIGraph
generic, public :: AllGather => AllGatherMPIInt, AllGatherMPIReal, AllGatherMPIGraph
generic, public :: merge => AllGatherMPIGraph
procedure, public, Pass :: AlltoAllMPIInt
procedure, public, Pass :: AlltoAllMPIReal
generic, public :: AlltoAll => AlltoAllMPIInt, AlltoAllMPIReal
procedure, public, Pass :: ReduceMPIInt
procedure, public, Pass :: ReduceMPIReal
generic, public :: Reduce => ReduceMPIInt, ReduceMPIReal
procedure, public, Pass :: AllReduceMPIInt
procedure, public, Pass :: AllReduceMPIReal
generic, public :: AllReduce => AllReduceMPIInt, AllReduceMPIReal
procedure, public :: createStack => createStackMPI
procedure, public :: showStack => showStackMPI
procedure, public :: free => FreeMPI
procedure, public :: split => SplitMPI
procedure, public :: copy => CopyMPI
procedure, public :: End => EndMPI
procedure, public :: getLapTime => getLapTimeMPI
procedure, public :: showLapTime => showLapTimeMPI
procedure, public :: GetInfo => GetMPIInfo
procedure, public :: createFileName => createFileNameMPI
procedure, public, Pass :: syncGraphMPI
generic, public :: sync => syncGraphMPI

Subroutines

public subroutine StartMPI(obj, NumOfComm)

Arguments

Type IntentOptional AttributesName
class(MPI_), intent(inout) :: obj
integer(kind=int32), intent(in), optional :: NumOfComm

public subroutine initItrMPI(obj, total_iteration)

Arguments

Type IntentOptional AttributesName
class(MPI_), intent(inout) :: obj
integer(kind=int32), intent(in) :: total_iteration

public subroutine createFileNameMPI(obj, Path, Name)

Arguments

Type IntentOptional AttributesName
class(MPI_), intent(inout) :: obj
character(len=*), intent(in) :: Path
character(len=*), intent(in) :: Name

public subroutine createStackMPI(obj, total)

Arguments

Type IntentOptional AttributesName
class(MPI_), intent(inout) :: obj
integer(kind=int32), intent(in) :: total

public subroutine showStackMPI(obj)

Arguments

Type IntentOptional AttributesName
class(MPI_), intent(inout) :: obj

public subroutine readMPIInt(obj, val, ExecRank, Msg)

Arguments

Type IntentOptional AttributesName
class(MPI_), intent(inout) :: obj
integer(kind=int32), intent(out) :: val
integer(kind=int32), intent(in), optional :: ExecRank
character(len=*), intent(in), optional :: Msg

public subroutine readMPIReal(obj, val, ExecRank, Msg)

Arguments

Type IntentOptional AttributesName
class(MPI_), intent(inout) :: obj
real(kind=real64), intent(out) :: val
integer(kind=int32), intent(in), optional :: ExecRank
character(len=*), intent(in), optional :: Msg

public subroutine GetMPIInfo(obj)

Arguments

Type IntentOptional AttributesName
class(MPI_), intent(inout) :: obj

public subroutine BarrierMPI(obj)

Arguments

Type IntentOptional AttributesName
class(MPI_), intent(inout) :: obj

public recursive subroutine BcastMPIInt(obj, From, val)

Arguments

Type IntentOptional AttributesName
class(MPI_), intent(inout) :: obj
integer(kind=int32), intent(in) :: From
integer(kind=int32), intent(inout) :: val

public recursive subroutine BcastMPIIntVec(obj, From, val)

Arguments

Type IntentOptional AttributesName
class(MPI_), intent(inout) :: obj
integer(kind=int32), intent(in) :: From
integer(kind=int32), intent(inout), allocatable:: val(:)

public recursive subroutine BcastMPIIntArray(obj, From, val)

Arguments

Type IntentOptional AttributesName
class(MPI_), intent(inout) :: obj
integer(kind=int32), intent(in) :: From
integer(kind=int32), intent(inout), allocatable:: val(:,:)

public recursive subroutine BcastMPIReal(obj, From, val)

Arguments

Type IntentOptional AttributesName
class(MPI_), intent(inout) :: obj
integer(kind=int32), intent(inout) :: From
real(kind=real64), intent(inout) :: val

public recursive subroutine BcastMPIRealVec(obj, From, val)

Arguments

Type IntentOptional AttributesName
class(MPI_), intent(inout) :: obj
integer(kind=int32), intent(in) :: From
real(kind=real64), intent(inout), allocatable:: val(:)

public recursive subroutine BcastMPIRealArray(obj, From, val)

Arguments

Type IntentOptional AttributesName
class(MPI_), intent(inout) :: obj
integer(kind=int32), intent(in) :: From
real(kind=real64), intent(inout), allocatable:: val(:,:)

public recursive subroutine BcastMPIChar(obj, From, val)

Arguments

Type IntentOptional AttributesName
class(MPI_), intent(inout) :: obj
integer(kind=int32), intent(inout) :: From
character(len=*), intent(inout) :: val

public subroutine GatherMPIInt(obj, sendobj, sendcount, recvobj, recvcount, send_start_id, recv_start_id, To)

Arguments

Type IntentOptional AttributesName
class(MPI_), intent(inout) :: obj
integer(kind=int32), intent(inout) :: sendobj(:)
integer(kind=int32), intent(in), optional :: sendcount
integer(kind=int32), intent(inout) :: recvobj(:)
integer(kind=int32), intent(in), optional :: recvcount
integer(kind=int32), intent(in), optional :: send_start_id
integer(kind=int32), intent(in), optional :: recv_start_id
integer(kind=int32), intent(in), optional :: To

public subroutine GatherMPIReal(obj, sendobj, sendcount, recvobj, recvcount, send_start_id, recv_start_id, To)

Arguments

Type IntentOptional AttributesName
class(MPI_), intent(inout) :: obj
real(kind=real64), intent(inout) :: sendobj(:)
integer(kind=int32), intent(in), optional :: sendcount
real(kind=real64), intent(inout) :: recvobj(:)
integer(kind=int32), intent(in), optional :: recvcount
integer(kind=int32), intent(in), optional :: send_start_id
integer(kind=int32), intent(in), optional :: recv_start_id
integer(kind=int32), intent(in), optional :: To

public subroutine ScatterMPIInt(obj, sendobj, sendcount, recvobj, recvcount, send_start_id, recv_start_id, From)

Arguments

Type IntentOptional AttributesName
class(MPI_), intent(inout) :: obj
integer(kind=int32), intent(inout) :: sendobj(:)
integer(kind=int32), intent(in) :: sendcount
integer(kind=int32), intent(inout) :: recvobj(:)
integer(kind=int32), intent(in) :: recvcount
integer(kind=int32), intent(in), optional :: send_start_id
integer(kind=int32), intent(in), optional :: recv_start_id
integer(kind=int32), intent(in), optional :: From

public subroutine ScatterMPIReal(obj, sendobj, sendcount, recvobj, recvcount, send_start_id, recv_start_id, From)

Arguments

Type IntentOptional AttributesName
class(MPI_), intent(inout) :: obj
real(kind=real64), intent(inout) :: sendobj(:)
integer(kind=int32), intent(in) :: sendcount
real(kind=real64), intent(inout) :: recvobj(:)
integer(kind=int32), intent(in) :: recvcount
integer(kind=int32), intent(in), optional :: send_start_id
integer(kind=int32), intent(in), optional :: recv_start_id
integer(kind=int32), intent(in), optional :: From

public subroutine AllGatherMPIInt(obj, sendobj, sendcount, recvobj, recvcount, send_start_id, recv_start_id)

Arguments

Type IntentOptional AttributesName
class(MPI_), intent(inout) :: obj
integer(kind=int32), intent(inout) :: sendobj(:)
integer(kind=int32), intent(in) :: sendcount
integer(kind=int32), intent(inout) :: recvobj(:)
integer(kind=int32), intent(in) :: recvcount
integer(kind=int32), intent(in), optional :: send_start_id
integer(kind=int32), intent(in), optional :: recv_start_id

public subroutine AllGatherMPIReal(obj, sendobj, sendcount, recvobj, recvcount, send_start_id, recv_start_id)

Arguments

Type IntentOptional AttributesName
class(MPI_), intent(inout) :: obj
real(kind=real64), intent(inout) :: sendobj(:)
integer(kind=int32), intent(in) :: sendcount
real(kind=real64), intent(inout) :: recvobj(:)
integer(kind=int32), intent(in) :: recvcount
integer(kind=int32), intent(in), optional :: send_start_id
integer(kind=int32), intent(in), optional :: recv_start_id

public subroutine AllGatherMPIGraph(obj, graph)

Arguments

Type IntentOptional AttributesName
class(MPI_), intent(inout) :: obj
type(Graph_), intent(inout) :: graph

public subroutine AlltoAllMPIInt(obj, sendobj, sendcount, recvobj, recvcount, send_start_id, recv_start_id)

Arguments

Type IntentOptional AttributesName
class(MPI_), intent(inout) :: obj
integer(kind=int32), intent(inout) :: sendobj(:)
integer(kind=int32), intent(in) :: sendcount
integer(kind=int32), intent(inout) :: recvobj(:)
integer(kind=int32), intent(in) :: recvcount
integer(kind=int32), intent(in), optional :: send_start_id
integer(kind=int32), intent(in), optional :: recv_start_id

public subroutine AlltoAllMPIReal(obj, sendobj, sendcount, recvobj, recvcount, send_start_id, recv_start_id)

Arguments

Type IntentOptional AttributesName
class(MPI_), intent(inout) :: obj
real(kind=real64), intent(inout) :: sendobj(:)
integer(kind=int32), intent(in) :: sendcount
real(kind=real64), intent(inout) :: recvobj(:)
integer(kind=int32), intent(in) :: recvcount
integer(kind=int32), intent(in), optional :: send_start_id
integer(kind=int32), intent(in), optional :: recv_start_id

public subroutine ReduceMPIInt(obj, sendobj, recvobj, count, start, To, max, min, sum, prod, land, band, lor, bor, lxor, bxor, maxloc, minloc)

Arguments

Type IntentOptional AttributesName
class(MPI_), intent(inout) :: obj
integer(kind=int32), intent(inout) :: sendobj(:)
integer(kind=int32), intent(inout) :: recvobj(:)
integer(kind=int32), intent(in) :: count
integer(kind=int32), intent(in), optional :: start
integer(kind=int32), intent(in), optional :: To
logical, intent(in), optional :: max
logical, intent(in), optional :: min
logical, intent(in), optional :: sum
logical, intent(in), optional :: prod
logical, intent(in), optional :: land
logical, intent(in), optional :: band
logical, intent(in), optional :: lor
logical, intent(in), optional :: bor
logical, intent(in), optional :: lxor
logical, intent(in), optional :: bxor
logical, intent(in), optional :: maxloc
logical, intent(in), optional :: minloc

public subroutine ReduceMPIReal(obj, sendobj, recvobj, count, start, To, max, min, sum, prod, land, band, lor, bor, lxor, bxor, maxloc, minloc)

Arguments

Type IntentOptional AttributesName
class(MPI_), intent(inout) :: obj
real(kind=real64), intent(inout) :: sendobj(:)
real(kind=real64), intent(inout) :: recvobj(:)
integer(kind=int32), intent(in) :: count
integer(kind=int32), intent(in), optional :: start
integer(kind=int32), intent(in), optional :: To
logical, intent(in), optional :: max
logical, intent(in), optional :: min
logical, intent(in), optional :: sum
logical, intent(in), optional :: prod
logical, intent(in), optional :: land
logical, intent(in), optional :: band
logical, intent(in), optional :: lor
logical, intent(in), optional :: bor
logical, intent(in), optional :: lxor
logical, intent(in), optional :: bxor
logical, intent(in), optional :: maxloc
logical, intent(in), optional :: minloc

public subroutine AllReduceMPIInt(obj, sendobj, recvobj, count, start, max, min, sum, prod, land, band, lor, bor, lxor, bxor, maxloc, minloc)

Arguments

Type IntentOptional AttributesName
class(MPI_), intent(inout) :: obj
integer(kind=int32), intent(inout) :: sendobj(:)
integer(kind=int32), intent(inout) :: recvobj(:)
integer(kind=int32), intent(in) :: count
integer(kind=int32), intent(in), optional :: start
logical, intent(in), optional :: max
logical, intent(in), optional :: min
logical, intent(in), optional :: sum
logical, intent(in), optional :: prod
logical, intent(in), optional :: land
logical, intent(in), optional :: band
logical, intent(in), optional :: lor
logical, intent(in), optional :: bor
logical, intent(in), optional :: lxor
logical, intent(in), optional :: bxor
logical, intent(in), optional :: maxloc
logical, intent(in), optional :: minloc

public subroutine AllReduceMPIReal(obj, sendobj, recvobj, count, start, max, min, sum, prod, land, band, lor, bor, lxor, bxor, maxloc, minloc)

Arguments

Type IntentOptional AttributesName
class(MPI_), intent(inout) :: obj
real(kind=real64), intent(inout) :: sendobj(:)
real(kind=real64), intent(inout) :: recvobj(:)
integer(kind=int32), intent(in) :: count
integer(kind=int32), intent(in), optional :: start
logical, intent(in), optional :: max
logical, intent(in), optional :: min
logical, intent(in), optional :: sum
logical, intent(in), optional :: prod
logical, intent(in), optional :: land
logical, intent(in), optional :: band
logical, intent(in), optional :: lor
logical, intent(in), optional :: bor
logical, intent(in), optional :: lxor
logical, intent(in), optional :: bxor
logical, intent(in), optional :: maxloc
logical, intent(in), optional :: minloc

public subroutine EndMPI(obj)

Arguments

Type IntentOptional AttributesName
class(MPI_), intent(inout) :: obj

public subroutine getLapTimeMPI(obj, comment)

Arguments

Type IntentOptional AttributesName
class(MPI_), intent(inout) :: obj
character(len=*), intent(in), optional :: comment

public subroutine showLapTimeMPI(obj, cLength, rank)

Arguments

Type IntentOptional AttributesName
class(MPI_), intent(inout) :: obj
integer(kind=int32), intent(in), optional :: cLength
integer(kind=int32), intent(in), optional :: rank

public subroutine CopyMPI(obj, OriginComm, NewCommLayerID)

Arguments

Type IntentOptional AttributesName
class(MPI_), intent(inout) :: obj
integer(kind=int32), intent(in), optional :: OriginComm
integer(kind=int32), intent(in), optional :: NewCommLayerID

public subroutine SplitMPI(obj, OriginComm, NewCommLayerID, key)

Arguments

Type IntentOptional AttributesName
class(MPI_), intent(inout) :: obj
integer(kind=int32), intent(in), optional :: OriginComm
integer(kind=int32), intent(in), optional :: NewCommLayerID
integer(kind=int32), intent(in), optional :: key

public subroutine FreeMPI(obj, CommLayerID)

Arguments

Type IntentOptional AttributesName
class(MPI_), intent(inout) :: obj
integer(kind=int32), intent(in), optional :: CommLayerID

public subroutine syncGraphMPI(obj, graph)

Arguments

Type IntentOptional AttributesName
class(MPI_), intent(inout) :: obj
type(Graph_), intent(inout) :: graph