dbcsr_t_nd_mp_comm Function

public function dbcsr_t_nd_mp_comm(comm_2d, map1_2d, map2_2d, dims_nd, dims1_nd, dims2_nd, pdims_2d, tdims, nsplit, dimsplit)

Create a default nd process topology that is consistent with a given 2d topology. Purpose: a nd tensor defined on the returned process grid can be represented as a DBCSR matrix with the given 2d topology. This is needed to enable contraction of 2 tensors (must have the same 2d process grid). \return with nd cartesian grid

Arguments

Type IntentOptional Attributes Name
type(mp_comm_type), intent(in) :: comm_2d

communicator with 2-dimensional topology

integer, intent(in), DIMENSION(:) :: map1_2d

which nd-indices map to first matrix index and in which order which nd-indices map to second matrix index and in which order

integer, intent(in), DIMENSION(:) :: map2_2d

which nd-indices map to first matrix index and in which order which nd-indices map to second matrix index and in which order

integer, intent(in), optional, DIMENSION(SIZE(map1_2d) + SIZE(map2_2d)) :: dims_nd

nd dimensions

integer, intent(in), optional, DIMENSION(SIZE(map1_2d)) :: dims1_nd
integer, intent(in), optional, DIMENSION(SIZE(map2_2d)) :: dims2_nd
integer, intent(in), optional, DIMENSION(2) :: pdims_2d

if comm_2d does not have a cartesian topology associated, can input dimensions with pdims_2d

integer, intent(in), optional, DIMENSION(SIZE(map1_2d) + SIZE(map2_2d)) :: tdims

tensor block dimensions. If present, process grid dimensions are created such that good load balancing is ensured even if some of the tensor dimensions are small (i.e. on the same order or smaller than nproc**(1/ndim) where ndim is the tensor rank)

integer, intent(in), optional :: nsplit
integer, intent(in), optional :: dimsplit

Return Value type(dbcsr_t_pgrid_type)