SimpleCommSplitter Derived Type

type, public, extends(AbstractCommSplitter) :: SimpleCommSplitter


Inherits

type~~simplecommsplitter~~InheritsGraph type~simplecommsplitter SimpleCommSplitter type~abstractcommsplitter AbstractCommSplitter type~simplecommsplitter->type~abstractcommsplitter type~commgroupdescriptionvector CommGroupDescriptionVector type~simplecommsplitter->type~commgroupdescriptionvector group_descriptions type~commgroupdescription CommGroupDescription type~commgroupdescriptionvector->type~commgroupdescription elements

Inherited by

type~~simplecommsplitter~~InheritedByGraph type~simplecommsplitter SimpleCommSplitter type~mapl_cap MAPL_Cap type~mapl_cap->type~simplecommsplitter splitter type~servermanager ServerManager type~mapl_cap->type~servermanager cap_server type~multicommserver MultiCommServer type~multicommserver->type~simplecommsplitter splitter type~multigroupserver MultiGroupServer type~multigroupserver->type~simplecommsplitter splitter type~servermanager->type~simplecommsplitter splitter type~extdatadriver ExtDataDriver type~extdatadriver->type~servermanager cap_server

Constructor

public interface SimpleCommSplitter

  • private function new_SimpleCommSplitter(communicator, unusable, base_name) result(splitter)

    Arguments

    Type IntentOptional Attributes Name
    integer, intent(in) :: communicator
    class(KeywordEnforcer), intent(in), optional :: unusable
    character(len=*), intent(in), optional :: base_name

    Return Value type(SimpleCommSplitter)

  • private function ensemble_comm_splitter(communicator, n_members, npes_member, unusable, isolate_nodes, base_name) result(splitter)

    Arguments

    Type IntentOptional Attributes Name
    integer, intent(in) :: communicator
    integer, intent(in) :: n_members
    integer, intent(in) :: npes_member
    class(KeywordEnforcer), intent(in), optional :: unusable
    logical, intent(in), optional :: isolate_nodes
    character(len=*), intent(in), optional :: base_name

    Return Value type(SimpleCommSplitter)


Type-Bound Procedures

generic, public :: add_group => add_group_simple

  • private subroutine add_group_simple(this, unusable, npes, nnodes, isolate_nodes, npes_per_node, name, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(SimpleCommSplitter), intent(inout) :: this
    class(KeywordEnforcer), intent(in), optional :: unusable
    integer, intent(in), optional :: npes
    integer, intent(in), optional :: nnodes
    logical, intent(in), optional :: isolate_nodes
    integer, intent(in), optional :: npes_per_node
    character(len=*), intent(in), optional :: name
    integer, intent(out), optional :: rc

procedure, public :: add_group_simple

  • private subroutine add_group_simple(this, unusable, npes, nnodes, isolate_nodes, npes_per_node, name, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(SimpleCommSplitter), intent(inout) :: this
    class(KeywordEnforcer), intent(in), optional :: unusable
    integer, intent(in), optional :: npes
    integer, intent(in), optional :: nnodes
    logical, intent(in), optional :: isolate_nodes
    integer, intent(in), optional :: npes_per_node
    character(len=*), intent(in), optional :: name
    integer, intent(out), optional :: rc

procedure, public :: assign

generic, public :: assignment(=) => assign

procedure, public :: compute_color

  • private function compute_color(this, unusable, rc) result(color)

    Arguments

    Type IntentOptional Attributes Name
    class(SimpleCommSplitter), intent(in) :: this
    class(KeywordEnforcer), intent(in), optional :: unusable
    integer, intent(out), optional :: rc

    Return Value integer

procedure, public :: free_sub_comm

  • private subroutine free_sub_comm(this)

    Arguments

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

procedure, public :: get_node_id

  • private function get_node_id(this, unusable, rc) result(node_id)

    Arguments

    Type IntentOptional Attributes Name
    class(SimpleCommSplitter), intent(in) :: this
    class(KeywordEnforcer), intent(in), optional :: unusable
    integer, intent(out), optional :: rc

    Return Value integer

procedure, public :: get_node_sizes

  • private function get_node_sizes(this, unusable, rc) result(node_sizes)

    Arguments

    Type IntentOptional Attributes Name
    class(SimpleCommSplitter), intent(in) :: this
    class(KeywordEnforcer), intent(in), optional :: unusable
    integer, intent(out), optional :: rc

    Return Value integer, allocatable, (:)

procedure, public :: get_shared_communicator

  • private function get_shared_communicator(this) result(shared_communicator)

    Arguments

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

    Return Value integer

procedure, public :: set_shared_communicator

  • private subroutine set_shared_communicator(this, shared_communicator)

    Arguments

    Type IntentOptional Attributes Name
    class(AbstractCommSplitter), intent(inout) :: this
    integer, intent(in) :: shared_communicator

procedure, public :: split

  • private function split(this, unusable, rc) result(split_communicator)

    Arguments

    Type IntentOptional Attributes Name
    class(SimpleCommSplitter), intent(in) :: this
    class(KeywordEnforcer), intent(in), optional :: unusable
    integer, intent(out), optional :: rc

    Return Value type(SplitCommunicator)

Source Code

   type, extends(AbstractCommSplitter) :: SimpleCommSplitter
      private
      character(:), allocatable :: base_name
      type (CommGroupDescriptionVector) :: group_descriptions
      logical :: is_split = .false.
      integer :: sub_comm
   contains
      procedure :: split
      procedure :: add_group_simple
      generic :: add_group => add_group_simple
      procedure :: compute_color
      procedure :: get_node_sizes
      procedure :: get_node_id
      procedure :: free_sub_comm
      procedure :: assign
      generic :: assignment(=) =>assign
   end type SimpleCommSplitter