create_comm_from_mpi Function

private function create_comm_from_mpi(mpi_comm_in) result(comm)

Internal helper function that wraps an MPI_Comm into a comm_t object and caches rank and size information

Arguments

Type IntentOptional Attributes Name
type(MPI_Comm), intent(in) :: mpi_comm_in

Return Value type(comm_t)


Calls

proc~~create_comm_from_mpi~~CallsGraph proc~create_comm_from_mpi create_comm_from_mpi mpi_comm_rank mpi_comm_rank proc~create_comm_from_mpi->mpi_comm_rank mpi_comm_size mpi_comm_size proc~create_comm_from_mpi->mpi_comm_size

Called by

proc~~create_comm_from_mpi~~CalledByGraph proc~create_comm_from_mpi create_comm_from_mpi proc~comm_duplicate comm_t%comm_duplicate proc~comm_duplicate->proc~create_comm_from_mpi proc~comm_split_by_color comm_t%comm_split_by_color proc~comm_split_by_color->proc~create_comm_from_mpi proc~comm_split_shared comm_t%comm_split_shared proc~comm_split_shared->proc~create_comm_from_mpi proc~create_world_comm create_world_comm proc~create_world_comm->proc~create_comm_from_mpi interface~comm_world comm_world interface~comm_world->proc~create_world_comm proc~comm_discard_leader comm_t%comm_discard_leader proc~comm_discard_leader->proc~comm_split_by_color proc~comm_discard_to comm_t%comm_discard_to proc~comm_discard_to->proc~comm_split_by_color proc~darrays_init darrays_init proc~darrays_init->proc~comm_duplicate proc~darrays_set_comm darrays_set_comm proc~darrays_set_comm->proc~comm_duplicate proc~dlb_init dlb_init proc~dlb_init->proc~comm_duplicate

Variables

Type Visibility Attributes Name Initial
integer(kind=int32), private :: ierr

Source Code

   function create_comm_from_mpi(mpi_comm_in) result(comm)
   !! Internal helper function that wraps an MPI_Comm into a comm_t object
   !! and caches rank and size information
      type(MPI_Comm), intent(in) :: mpi_comm_in
      type(comm_t) :: comm
      integer(int32) :: ierr

      comm%m_comm = mpi_comm_in
      if (mpi_comm_in /= MPI_COMM_NULL) then
         call MPI_Comm_rank(comm%m_comm, comm%m_rank, ierr)
         call MPI_Comm_size(comm%m_comm, comm%m_size, ierr)
         comm%is_valid = .true.
      else
         comm%is_valid = .false.
      end if

   end function create_comm_from_mpi