AbstractServer Derived Type

type, public, abstract :: AbstractServer


Inherits

type~~abstractserver~~InheritsGraph type~abstractserver AbstractServer StringInteger64Map StringInteger64Map type~abstractserver->StringInteger64Map prefetch_offset, stage_offset type~abstractdatareferencevector AbstractDataReferenceVector type~abstractserver->type~abstractdatareferencevector dataRefPtrs type~v_wrapper~9 v_Wrapper type~abstractdatareferencevector->type~v_wrapper~9 elements type~abstractdatareference AbstractDataReference type~v_wrapper~9->type~abstractdatareference item c_ptr c_ptr type~abstractdatareference->c_ptr base_address

Inherited by

type~~abstractserver~~InheritedByGraph type~abstractserver AbstractServer type~baseserver BaseServer type~baseserver->type~abstractserver type~serverthreadvector ServerThreadVector type~baseserver->type~serverthreadvector threads type~serverthread ServerThread type~serverthread->type~abstractserver containing_server type~mockserver MockServer type~mockserver->type~baseserver type~mockserverthread MockServerThread type~mockserverthread->type~serverthread type~mpiserver MpiServer type~mpiserver->type~baseserver type~multicommserver MultiCommServer type~multicommserver->type~baseserver type~multigroupserver MultiGroupServer type~multigroupserver->type~baseserver type~multilayerserver MultiLayerServer type~multilayerserver->type~baseserver type~openmpserver OpenMPServer type~openmpserver->type~baseserver type~portinfo PortInfo type~portinfo->type~baseserver server_ptr type~servermanager ServerManager type~servermanager->type~baseserver o_server type~servermanager->type~mpiserver i_server type~directoryservice DirectoryService type~servermanager->type~directoryservice directory_service type~v_wrapper~12 v_Wrapper type~v_wrapper~12->type~serverthread item type~directoryservice->type~portinfo local_ports type~extdatadriver ExtDataDriver type~extdatadriver->type~servermanager cap_server type~mapl_cap MAPL_Cap type~mapl_cap->type~servermanager cap_server type~maplframework MaplFramework type~maplframework->type~mpiserver o_server, i_server type~maplframework->type~directoryservice directory_service type~serverthreadvector->type~v_wrapper~12 elements type~serverthreadvectoriterator ServerThreadVectorIterator type~serverthreadvectoriterator->type~v_wrapper~12 elements type~serverthreadvectorriterator ServerThreadVectorRIterator type~serverthreadvectorriterator->type~v_wrapper~12 elements

Components

Type Visibility Attributes Name Initial
integer, public :: InNode_Comm
integer, public :: InNode_Rank
integer, public :: InNode_npes
integer, public :: NodeRoot_Comm
integer, public :: Node_Num
integer, public :: Node_Rank
integer, public, allocatable :: Node_Ranks(:)
integer, public :: comm
integer, public :: npes
integer, public :: num_clients = 0
integer, public :: rank
integer, public :: status
logical, public :: all_backlog_is_empty = .true.
logical, public, allocatable :: serverthread_done_msgs(:)
logical, public :: terminate
type(AbstractDataReferenceVector), public :: dataRefPtrs
type(StringInteger64Map), public :: prefetch_offset
type(StringInteger64Map), public :: stage_offset

Type-Bound Procedures

procedure, public :: I_am_NodeRoot

  • private function I_am_NodeRoot(this) result(yes)

    Arguments

    Type IntentOptional Attributes Name
    class(AbstractServer), intent(in) :: this

    Return Value logical

procedure, public :: I_am_ServerRoot

  • private function I_am_ServerRoot(this) result(yes)

    Arguments

    Type IntentOptional Attributes Name
    class(AbstractServer), intent(in) :: this

    Return Value logical

procedure, public :: add_DataReference

  • private subroutine add_DataReference(this, DataRef)

    Arguments

    Type IntentOptional Attributes Name
    class(AbstractServer), intent(inout) :: this
    class(AbstractDataReference), intent(in), target :: DataRef

procedure, public :: am_I_reading_PE

  • private function am_I_reading_PE(this, id) result(yes)

    Arguments

    Type IntentOptional Attributes Name
    class(AbstractServer), intent(in) :: this
    integer, intent(in) :: id

    Return Value logical

procedure, public :: clean_up

  • private subroutine clean_up(this, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(AbstractServer), intent(inout), target :: this
    integer, intent(out), optional :: rc

procedure, public :: clear_DataReference

  • private subroutine clear_DataReference(this)

    Arguments

    Type IntentOptional Attributes Name
    class(AbstractServer), intent(inout), target :: this

procedure(clear_RequestHandle), public, deferred :: clear_RequestHandle

  • subroutine clear_RequestHandle(this, rc) Prototype

    Arguments

    Type IntentOptional Attributes Name
    class(AbstractServer), intent(inout), target :: this
    integer, intent(out), optional :: rc

procedure(create_remote_win), public, deferred :: create_remote_win

  • subroutine create_remote_win(this, rc) Prototype

    Arguments

    Type IntentOptional Attributes Name
    class(AbstractServer), intent(inout), target :: this
    integer, intent(out), optional :: rc

procedure, public :: distribute_task

  • private subroutine distribute_task(this, id, node_rank, innode_rank)

    Arguments

    Type IntentOptional Attributes Name
    class(AbstractServer), intent(in) :: this
    integer, intent(in) :: id
    integer, intent(out) :: node_rank
    integer, intent(out) :: innode_rank

procedure, public :: get_AllBacklogIsEmpty

  • private function get_AllBacklogIsEmpty(this) result(status)

    Arguments

    Type IntentOptional Attributes Name
    class(AbstractServer), intent(in) :: this

    Return Value logical

procedure, public :: get_DataFromMem

  • private subroutine get_DataFromMem(this, multi, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(AbstractServer), intent(inout), target :: this
    logical, intent(in) :: multi
    integer, intent(out), optional :: rc

procedure, public :: get_DataReference

  • private function get_DataReference(this, ith) result(DataRef)

    Arguments

    Type IntentOptional Attributes Name
    class(AbstractServer), intent(in), target :: this
    integer, intent(in), optional :: ith

    Return Value class(AbstractDataReference), pointer

procedure, public :: get_communicator

  • private function get_communicator(this) result(communicator)

    Arguments

    Type IntentOptional Attributes Name
    class(AbstractServer), intent(in) :: this

    Return Value integer

procedure(get_dmessage), public, deferred :: get_dmessage

  • function get_dmessage(this, rc) result(dmessage) Prototype

    Arguments

    Type IntentOptional Attributes Name
    class(AbstractServer), intent(in), target :: this
    integer, intent(out), optional :: rc

    Return Value class(AbstractMessage), pointer

procedure, public :: get_status

  • private function get_status(this) result(status)

    Arguments

    Type IntentOptional Attributes Name
    class(AbstractServer), intent(in) :: this

    Return Value integer

procedure, public :: get_writing_PE

  • private function get_writing_PE(this, id) result(rank)

    Arguments

    Type IntentOptional Attributes Name
    class(AbstractServer), intent(in) :: this
    integer, intent(in) :: id

    Return Value integer

procedure, public :: init

  • private subroutine init(this, comm, port_name, profiler_name, with_profiler, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(AbstractServer), intent(inout) :: this
    integer, intent(in) :: comm
    character(len=*), intent(in) :: port_name
    character(len=*), intent(in), optional :: profiler_name
    logical, intent(in), optional :: with_profiler
    integer, intent(out), optional :: rc

procedure, public :: put_DataToFile

  • private subroutine put_DataToFile(this, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(AbstractServer), intent(inout), target :: this
    integer, intent(out), optional :: rc

procedure, public :: receive_output_data

  • private subroutine receive_output_data(this, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(AbstractServer), intent(inout), target :: this
    integer, intent(out), optional :: rc

procedure, public :: report_profile

  • private subroutine report_profile(this, RC)

    Arguments

    Type IntentOptional Attributes Name
    class(AbstractServer), intent(inout) :: this
    integer, intent(out), optional :: RC

procedure, public :: set_AllBacklogIsEmpty

  • private subroutine set_AllBacklogIsEmpty(this, status)

    Arguments

    Type IntentOptional Attributes Name
    class(AbstractServer), intent(inout) :: this
    logical :: status

procedure(set_collective_request), public, deferred :: set_collective_request

  • subroutine set_collective_request(this, request, have_done) Prototype

    Arguments

    Type IntentOptional Attributes Name
    class(AbstractServer), intent(inout), target :: this
    logical, intent(in) :: request
    logical, intent(in) :: have_done

procedure, public :: set_status

  • private subroutine set_status(this, status)

    Arguments

    Type IntentOptional Attributes Name
    class(AbstractServer), intent(inout) :: this
    integer, intent(in) :: status

procedure(start), public, deferred :: start

  • subroutine start(this, rc) Prototype

    Arguments

    Type IntentOptional Attributes Name
    class(AbstractServer), intent(inout), target :: this
    integer, intent(out), optional :: rc

procedure, public :: update_status

  • private subroutine update_status(this, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(AbstractServer), intent(inout) :: this
    integer, intent(out), optional :: rc

Source Code

   type,abstract :: AbstractServer
      integer :: comm   ! of all server processes
      integer :: rank   ! rank in all server processes
      integer :: npes   ! number of processes of the server
      integer :: status ! counter, UNALLOCATED, PENDING
      logical :: all_backlog_is_empty = .true.
      integer :: num_clients = 0
      logical :: terminate
      integer :: InNode_Comm  ! communicator in a node
      integer :: InNode_npes  ! number of processes in a node, it may differ across server nodes
      integer :: InNode_Rank  ! rank in a node
      integer :: NodeRoot_Comm! communicator of server nodes' roots
      integer :: Node_Num     ! number of server nodes
      integer :: Node_Rank    ! rank of server nodes

      ! save info about which process belongs to which node
      ! all processes keep this info
      integer,allocatable    :: Node_Ranks(:)
      type(StringInteger64Map) :: prefetch_offset
      type(StringInteger64Map) :: stage_offset
      logical , allocatable :: serverthread_done_msgs(:)
      type(AbstractDataReferenceVector) :: dataRefPtrs
   contains
      procedure :: init
      procedure(start),deferred :: start
      procedure(get_dmessage), deferred :: get_dmessage
      procedure(clear_RequestHandle), deferred :: clear_RequestHandle
      procedure(set_collective_request), deferred :: set_collective_request
      procedure(create_remote_win), deferred :: create_remote_win
      procedure :: get_status
      procedure :: set_status
      procedure :: update_status
      procedure :: clean_up
      procedure :: set_AllBacklogIsEmpty
      procedure :: get_AllBacklogIsEmpty
      procedure :: get_DataReference
      procedure :: add_DataReference
      procedure :: clear_DataReference
      procedure :: I_am_NodeRoot
      procedure :: I_am_ServerRoot
      procedure :: receive_output_data
      procedure :: put_DataToFile
      procedure :: get_DataFromMem
      procedure :: am_I_reading_PE
      procedure :: get_writing_PE
      procedure :: distribute_task
      procedure :: get_communicator
      procedure :: report_profile
   end type AbstractServer