create_member_subcommunicator Function

function create_member_subcommunicator(comm, n_members, npes_member, rc) result(subcommunicator)

Uses

  • proc~~create_member_subcommunicator~2~~UsesGraph proc~create_member_subcommunicator~2 create_member_subcommunicator module~mapl_simplecommsplittermod MAPL_SimpleCommSplitterMod proc~create_member_subcommunicator~2->module~mapl_simplecommsplittermod module~mapl_abstractcommsplittermod MAPL_AbstractCommSplitterMod module~mapl_simplecommsplittermod->module~mapl_abstractcommsplittermod module~mapl_commgroupdescriptionmod MAPL_CommGroupDescriptionMod module~mapl_simplecommsplittermod->module~mapl_commgroupdescriptionmod module~mapl_commgroupdescriptionvectormod MAPL_CommGroupDescriptionVectorMod module~mapl_simplecommsplittermod->module~mapl_commgroupdescriptionvectormod module~mapl_exceptionhandling MAPL_ExceptionHandling module~mapl_simplecommsplittermod->module~mapl_exceptionhandling module~mapl_keywordenforcermod MAPL_KeywordEnforcerMod module~mapl_simplecommsplittermod->module~mapl_keywordenforcermod module~mapl_splitcommunicatormod MAPL_SplitCommunicatorMod module~mapl_simplecommsplittermod->module~mapl_splitcommunicatormod mpi mpi module~mapl_simplecommsplittermod->mpi module~mapl_abstractcommsplittermod->mpi module~mapl_commgroupdescriptionmod->module~mapl_exceptionhandling module~mapl_commgroupdescriptionmod->module~mapl_keywordenforcermod module~mapl_commgroupdescriptionvectormod->module~mapl_commgroupdescriptionmod module~mapl_errorhandlingmod MAPL_ErrorHandlingMod module~mapl_exceptionhandling->module~mapl_errorhandlingmod module~mapl_throwmod MAPL_ThrowMod module~mapl_exceptionhandling->module~mapl_throwmod module~mapl_errorhandlingmod->mpi module~mapl_errorhandlingmod->module~mapl_throwmod

create_member_subcommunicator – Create a subcommunicator

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: comm
integer :: n_members
integer :: npes_member
integer, intent(out), optional :: rc

Return Value integer


Calls

proc~~create_member_subcommunicator~2~~CallsGraph proc~create_member_subcommunicator~2 create_member_subcommunicator none~get_subcommunicator SplitCommunicator%get_subcommunicator proc~create_member_subcommunicator~2->none~get_subcommunicator none~split~2 SimpleCommSplitter%split proc~create_member_subcommunicator~2->none~split~2 interface~mapl_assert MAPL_Assert none~split~2->interface~mapl_assert mpi_comm_split mpi_comm_split none~split~2->mpi_comm_split none~at~286 CommGroupDescriptionVector%at none~split~2->none~at~286 none~compute_color SimpleCommSplitter%compute_color none~split~2->none~compute_color none~get_shared_communicator AbstractCommSplitter%get_shared_communicator none~split~2->none~get_shared_communicator proc~mapl_return MAPL_Return none~split~2->proc~mapl_return proc~mapl_verify MAPL_Verify none~split~2->proc~mapl_verify none~at_32~58 CommGroupDescriptionVector%at_32 none~at~286->none~at_32~58 none~compute_color->none~at~286 none~compute_color->none~get_shared_communicator none~compute_color->proc~mapl_return none~compute_color->proc~mapl_verify mpi_comm_free mpi_comm_free none~compute_color->mpi_comm_free mpi_comm_rank mpi_comm_rank none~compute_color->mpi_comm_rank mpi_comm_split_type mpi_comm_split_type none~compute_color->mpi_comm_split_type none~comm_group_range CommGroupDescription%comm_group_range none~compute_color->none~comm_group_range none~get_node_id SimpleCommSplitter%get_node_id none~compute_color->none~get_node_id none~get_node_sizes SimpleCommSplitter%get_node_sizes none~compute_color->none~get_node_sizes at at proc~mapl_return->at insert insert proc~mapl_return->insert proc~mapl_throw_exception MAPL_throw_exception proc~mapl_return->proc~mapl_throw_exception proc~mapl_verify->proc~mapl_throw_exception none~at_size_kind~61 CommGroupDescriptionVector%at_size_kind none~at_32~58->none~at_size_kind~61 none~comm_group_range->interface~mapl_assert none~comm_group_range->proc~mapl_return none~get_node_id->none~get_shared_communicator none~get_node_id->proc~mapl_return none~get_node_id->proc~mapl_verify none~get_node_id->mpi_comm_free none~get_node_id->mpi_comm_rank none~get_node_id->mpi_comm_split_type mpi_allgather mpi_allgather none~get_node_id->mpi_allgather mpi_bcast mpi_bcast none~get_node_id->mpi_bcast mpi_comm_size mpi_comm_size none~get_node_id->mpi_comm_size none~get_node_sizes->none~get_shared_communicator none~get_node_sizes->proc~mapl_return none~get_node_sizes->proc~mapl_verify none~get_node_sizes->mpi_comm_free none~get_node_sizes->mpi_comm_rank none~get_node_sizes->mpi_comm_split_type none~get_node_sizes->mpi_allgather none~get_node_sizes->mpi_comm_size

Called by

proc~~create_member_subcommunicator~2~~CalledByGraph proc~create_member_subcommunicator~2 create_member_subcommunicator program~main~10 main program~main~10->proc~create_member_subcommunicator~2

Source Code

   integer function create_member_subcommunicator(comm, n_members, npes_member, rc) result(subcommunicator)
      use MAPL_SimpleCommSplitterMod
      integer, intent(in) :: comm
      integer :: n_members, npes_member
      integer, optional, intent(out) :: rc

      type(SimpleCommSplitter) :: splitter
      type (SplitCommunicator) :: split_comm

      integer :: status

      subcommunicator = MPI_COMM_NULL ! in case of failure
      splitter = SimpleCommSplitter(comm, n_members, npes_member)
      split_comm = splitter%split(rc=status)
      ! _VERIFY(status)
      subcommunicator = split_comm%get_subcommunicator()

      _UNUSED_DUMMY(rc)

   end function create_member_subcommunicator