dlb_init Subroutine

public subroutine dlb_init(comm)

Initialize dynamic load balancing

Creates a shared counter window on rank 0.

Arguments

Type IntentOptional Attributes Name
type(comm_t), intent(in) :: comm

MPI communicator to use


Calls

proc~~dlb_init~~CallsGraph proc~dlb_init dlb_init interface~win_allocate win_allocate proc~dlb_init->interface~win_allocate proc~comm_barrier comm_t%comm_barrier proc~dlb_init->proc~comm_barrier proc~comm_duplicate comm_t%comm_duplicate proc~dlb_init->proc~comm_duplicate proc~create_win_allocate_dp_1d create_win_allocate_dp_1d interface~win_allocate->proc~create_win_allocate_dp_1d proc~create_win_allocate_dp_2d create_win_allocate_dp_2d interface~win_allocate->proc~create_win_allocate_dp_2d proc~create_win_allocate_i32_1d create_win_allocate_i32_1d interface~win_allocate->proc~create_win_allocate_i32_1d proc~create_win_allocate_i64_1d create_win_allocate_i64_1d interface~win_allocate->proc~create_win_allocate_i64_1d proc~create_win_allocate_sp_1d create_win_allocate_sp_1d interface~win_allocate->proc~create_win_allocate_sp_1d mpi_barrier mpi_barrier proc~comm_barrier->mpi_barrier interface~comm_null comm_null proc~comm_duplicate->interface~comm_null mpi_comm_dup mpi_comm_dup proc~comm_duplicate->mpi_comm_dup proc~create_comm_from_mpi create_comm_from_mpi proc~comm_duplicate->proc~create_comm_from_mpi proc~create_null_comm create_null_comm interface~comm_null->proc~create_null_comm 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 mpi_win_allocate mpi_win_allocate proc~create_win_allocate_dp_1d->mpi_win_allocate proc~comm_get comm_t%comm_get proc~create_win_allocate_dp_1d->proc~comm_get proc~create_win_allocate_dp_2d->mpi_win_allocate proc~create_win_allocate_dp_2d->proc~comm_get proc~create_win_allocate_i32_1d->mpi_win_allocate proc~create_win_allocate_i32_1d->proc~comm_get proc~create_win_allocate_i64_1d->mpi_win_allocate proc~create_win_allocate_i64_1d->proc~comm_get proc~create_win_allocate_sp_1d->mpi_win_allocate proc~create_win_allocate_sp_1d->proc~comm_get

Source Code

   subroutine dlb_init(comm)
      type(comm_t), intent(in) :: comm

      dlb_comm = comm%duplicate()

      ! Allocate counter on all ranks (rank 0's is the master)
      call win_allocate(dlb_comm, 1_int32, counter_ptr, counter_win)
      counter_ptr(1) = 0_int64

      call dlb_comm%barrier()
      dlb_initialized = .true.
   end subroutine dlb_init