|
recursive subroutine, public | dbt_types::dbt_mp_dims_create (nodes, dims, tensor_dims, lb_ratio) |
| Create process grid dimensions corresponding to one dimension of the matrix representation of a tensor, imposing that no process grid dimension is greater than the corresponding tensor dimension.
|
|
subroutine, public | dbt_types::dbt_pgrid_create_expert (mp_comm, dims, pgrid, map1_2d, map2_2d, tensor_dims, nsplit, dimsplit) |
| Create an n-dimensional process grid. We can not use a n-dimensional MPI cartesian grid for tensors since the mapping between n-dim. and 2-dim. index allows for an arbitrary reordering of tensor index. Therefore we can not use n-dim. MPI Cartesian grid because it may not be consistent with the respective 2d grid. The 2d Cartesian MPI grid is the reference grid (since tensor data is stored as DBM matrix) and this routine creates an object that is a n-dim. interface to this grid. map1_2d and map2_2d don't need to be specified (correctly), grid may be redefined in dbt_distribution_new. Note that pgrid is equivalent to a MPI cartesian grid only if map1_2d and map2_2d don't reorder indices (which is the case if [map1_2d, map2_2d] == [1, 2, ..., ndims]). Otherwise the mapping of grid coordinates to processes depends on the ordering of the indices and is not equivalent to a MPI cartesian grid.
|
|
type(dbt_pgrid_type) function, public | dbt_types::dbt_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 DBM matrix with the given 2d topology. This is needed to enable contraction of 2 tensors (must have the same 2d process grid).
|
|
subroutine, public | dbt_types::dbt_nd_mp_free (mp_comm) |
| Release the MPI communicator.
|
|
subroutine, public | dbt_types::mp_environ_pgrid (pgrid, dims, task_coor) |
| as mp_environ but for special pgrid type
|
|
subroutine, public | dbt_types::dbt_distribution_new_expert (dist, pgrid, map1_2d, map2_2d, nd_dist_1, nd_dist_2, nd_dist_3, nd_dist_4, own_comm) |
| Create a tensor distribution.
|
|
subroutine, public | dbt_types::dbt_distribution_new (dist, pgrid, nd_dist_1, nd_dist_2, nd_dist_3, nd_dist_4) |
| Create a tensor distribution.
|
|
subroutine, public | dbt_types::dbt_pgrid_destroy (pgrid, keep_comm) |
| destroy process grid
|
|
subroutine, public | dbt_types::dbt_distribution_destroy (dist) |
| Destroy tensor distribution.
|
|
type(dbt_distribution_type) function, public | dbt_types::dbt_distribution (tensor) |
| get distribution from tensor
|
|
subroutine, public | dbt_types::dbt_hold (tensor) |
| reference counting for tensors (only needed for communicator handle that must be freed when no longer needed)
|
|
pure integer(int_8) function, public | dbt_types::ndims_matrix_row (tensor) |
| how many tensor dimensions are mapped to matrix row
|
|
pure integer(int_8) function, public | dbt_types::ndims_matrix_column (tensor) |
| how many tensor dimensions are mapped to matrix column
|
|
pure integer function, public | dbt_types::ndims_tensor (tensor) |
| tensor rank
|
|
subroutine, public | dbt_types::dims_tensor (tensor, dims) |
| tensor dimensions
|
|
subroutine, public | dbt_types::dbt_destroy (tensor) |
| Destroy a tensor.
|
|
subroutine, public | dbt_types::blk_dims_tensor (tensor, dims) |
| tensor block dimensions
|
|
subroutine, public | dbt_types::dbt_blk_sizes (tensor, ind, blk_size) |
| Size of tensor block.
|
|
subroutine, public | dbt_types::dbt_blk_offsets (tensor, ind, blk_offset) |
| offset of tensor block
|
|
subroutine, public | dbt_types::dbt_get_stored_coordinates (tensor, ind_nd, processor) |
| Generalization of block_get_stored_coordinates for tensors.
|
|
subroutine, public | dbt_types::dbt_pgrid_create (mp_comm, dims, pgrid, tensor_dims) |
|
subroutine, public | dbt_types::dbt_pgrid_set_strict_split (pgrid) |
| freeze current split factor such that it is never changed during contraction
|
|
subroutine, public | dbt_types::dbt_pgrid_change_dims (pgrid, pdims) |
| change dimensions of an existing process grid.
|
|
subroutine, public | dbt_types::dbt_filter (tensor, eps) |
| As block_filter.
|
|
pure integer function, public | dbt_types::dbt_nblks_local (tensor, idim) |
| local number of blocks along dimension idim
|
|
pure integer function, public | dbt_types::dbt_nblks_total (tensor, idim) |
| total numbers of blocks along dimension idim
|
|
subroutine, public | dbt_types::dbt_get_info (tensor, nblks_total, nfull_total, nblks_local, nfull_local, pdims, my_ploc, blks_local_1, blks_local_2, blks_local_3, blks_local_4, proc_dist_1, proc_dist_2, proc_dist_3, proc_dist_4, blk_size_1, blk_size_2, blk_size_3, blk_size_4, blk_offset_1, blk_offset_2, blk_offset_3, blk_offset_4, distribution, name) |
| As block_get_info but for tensors.
|
|
pure integer function, public | dbt_types::dbt_get_num_blocks (tensor) |
| As block_get_num_blocks: get number of local blocks.
|
|
integer(kind=int_8) function, public | dbt_types::dbt_get_num_blocks_total (tensor) |
| Get total number of blocks.
|
|
subroutine, public | dbt_types::dbt_clear (tensor) |
| Clear tensor (s.t. it does not contain any blocks)
|
|
subroutine, public | dbt_types::dbt_finalize (tensor) |
| Finalize tensor, as block_finalize. This should be taken care of internally in DBT tensors, there should not be any need to call this routine outside of DBT tensors.
|
|
subroutine, public | dbt_types::dbt_scale (tensor, alpha) |
| as block_scale
|
|
pure integer function, public | dbt_types::dbt_get_nze (tensor) |
|
integer(kind=int_8) function, public | dbt_types::dbt_get_nze_total (tensor) |
|
pure integer function, public | dbt_types::dbt_blk_size (tensor, ind, idim) |
| block size of block with index ind along dimension idim
|
|
pure integer function, public | dbt_types::dbt_max_nblks_local (tensor) |
| returns an estimate of maximum number of local blocks in tensor (irrespective of the actual number of currently present blocks) this estimate is based on the following assumption: tensor data is dense and load balancing is within a factor of 2
|
|
subroutine, public | dbt_types::dbt_default_distvec (nblk, nproc, blk_size, dist) |
| get a load-balanced and randomized distribution along one tensor dimension
|
|
subroutine, public | dbt_types::dbt_copy_contraction_storage (tensor_in, tensor_out) |
|