darrays_dlb Module

Dynamic load balancing for distributed arrays

Provides atomic counter-based load balancing using MPI-3 RMA. Rank 0 hosts the counter, all ranks can atomically increment it.


Uses

  • module~~darrays_dlb~~UsesGraph module~darrays_dlb darrays_dlb module~pic_mpi_lib pic_mpi_lib module~darrays_dlb->module~pic_mpi_lib mpi_f08 mpi_f08 module~darrays_dlb->mpi_f08 pic_types pic_types module~darrays_dlb->pic_types module~pic_mpi_f08 pic_mpi_f08 module~pic_mpi_lib->module~pic_mpi_f08 module~pic_mpi_f08->mpi_f08 module~pic_mpi_f08->pic_types

Used by

  • module~~darrays_dlb~~UsedByGraph module~darrays_dlb darrays_dlb module~darrays darrays module~darrays->module~darrays_dlb

Variables

Type Visibility Attributes Name Initial
integer(kind=int64), private, pointer, save :: counter_ptr(:) => null()
type(win_t), private, save :: counter_win
type(comm_t), private, save :: dlb_comm
logical, private, save :: dlb_initialized = .false.

Subroutines

public subroutine dlb_finalize()

Finalize dynamic load balancing

Arguments

None

public subroutine dlb_init(comm)

Initialize dynamic load balancing

Read more…

Arguments

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

MPI communicator to use

public subroutine dlb_next(counter)

Get next work unit atomically

Read more…

Arguments

Type IntentOptional Attributes Name
integer(kind=int64), intent(out) :: counter

Output: unique counter value (0-indexed)

public subroutine dlb_reset()

Reset the load balancing counter to zero

Read more…

Arguments

None