Octopus
multicomm.F90 File Reference

Go to the source code of this file.

Modules

module  multicomm_oct_m
 This module handles the communicators for the various parallelization strategies.
 

Data Types

type  multicomm_oct_m::multicomm_t
 Stores all communicators and groups. More...
 
type  multicomm_oct_m::multicomm_all_pairs_t
 An all-pairs communication schedule for a given group. More...
 

Functions/Subroutines

subroutine, public multicomm_oct_m::multicomm_all_pairs_copy (apout, apin)
 
subroutine, public multicomm_oct_m::multicomm_init (mc, namespace, base_grp, mode_para, n_node, index_range, min_range)
 create index and domain communicators More...
 
subroutine strategy ()
 
subroutine assign_nodes ()
 
subroutine sanity_check ()
 check if a balanced distribution of nodes will be used More...
 
subroutine group_comm_create ()
 
subroutine create_slave_intercommunicators ()
 
subroutine, public multicomm_oct_m::multicomm_end (mc)
 
logical pure function, public multicomm_oct_m::multicomm_strategy_is_parallel (mc, level)
 
subroutine, public multicomm_oct_m::multicomm_create_all_pairs (mpi_grp, ap)
 This routine uses the one-factorization (or near-one-factorization of a complete graph to construct an all-pair communication schedule (cf. Wang, X., Blum, E. K., Parker, D. S., and Massey, D. 1997. The dance-party problem and its application to collective communication in computer networks. Parallel Comput. 23, 8 (Aug. 1997), 1141-1156. More...
 
integer pure function get_partner (in, ir)
 Those are from the paper cited above. More...
 
integer pure function get_partner_even (grp_size, ii, rr)
 
integer pure function get_partner_odd (grp_size, ii, rr)
 
subroutine, public multicomm_oct_m::multicomm_divide_range (nobjs, nprocs, istart, ifinal, lsize, scalapack_compat)
 Divide the range of numbers [1, nobjs] between nprocs processors. More...
 
subroutine, public multicomm_oct_m::multicomm_divide_range_omp (nobjs, ini, nobjs_loc)
 Function to divide the range of numbers from 1 to nobjs between all available threads with OpenMP. More...
 
logical pure function, public multicomm_oct_m::multicomm_is_slave (this)
 
logical pure function, public multicomm_oct_m::multicomm_have_slaves (this)
 

Variables

integer, parameter, public multicomm_oct_m::p_master = 1
 
integer, parameter, public multicomm_oct_m::p_slave = 2
 
integer, parameter, public multicomm_oct_m::par_auto = -1
 
integer, parameter, public multicomm_oct_m::par_no = 0
 
integer, parameter multicomm_oct_m::n_par_types = 4
 
character(len=11), dimension(0:n_par_types), parameter multicomm_oct_m::par_types = (/ "serial ", "ParDomains", "ParStates ", "ParKPoints", "ParOther " /)
 
integer, parameter multicomm_oct_m::max_index = 5
 

Function/Subroutine Documentation

◆ strategy()

subroutine multicomm_init::strategy
private

Definition at line 461 of file multicomm.F90.

◆ assign_nodes()

subroutine multicomm_init::assign_nodes
private

Definition at line 520 of file multicomm.F90.

◆ sanity_check()

subroutine multicomm_init::sanity_check
private

check if a balanced distribution of nodes will be used

Definition at line 598 of file multicomm.F90.

◆ group_comm_create()

subroutine multicomm_init::group_comm_create
private

Definition at line 675 of file multicomm.F90.

◆ create_slave_intercommunicators()

subroutine multicomm_init::create_slave_intercommunicators
private

Definition at line 859 of file multicomm.F90.

◆ get_partner()

integer pure function multicomm_create_all_pairs::get_partner ( integer, intent(in)  in,
integer, intent(in)  ir 
)
private

Those are from the paper cited above.

Definition at line 977 of file multicomm.F90.

◆ get_partner_even()

integer pure function multicomm_create_all_pairs::get_partner_even ( integer, intent(in)  grp_size,
integer, intent(in)  ii,
integer, intent(in)  rr 
)
private

Definition at line 991 of file multicomm.F90.

◆ get_partner_odd()

integer pure function multicomm_create_all_pairs::get_partner_odd ( integer, intent(in)  grp_size,
integer, intent(in)  ii,
integer, intent(in)  rr 
)
private

Definition at line 1013 of file multicomm.F90.