(git:ccc2433)
dbt_api.F
Go to the documentation of this file.
1 !--------------------------------------------------------------------------------------------------!
2 ! CP2K: A general program to perform molecular dynamics simulations !
3 ! Copyright 2000-2024 CP2K developers group <https://cp2k.org> !
4 ! !
5 ! SPDX-License-Identifier: GPL-2.0-or-later !
6 !--------------------------------------------------------------------------------------------------!
7 
8 ! **************************************************************************************************
9 !> \brief This is the start of a dbt_api, all publically needed functions
10 !> are exported here. The others remain private to the library.
11 !> Currently, this is the CP2K used set.
12 !> Ultimately, a reduced subset and well defined api will remain,
13 !> possibly grouped in to standard and expert api.
14 !> Currently, this is work in progress.
15 !> \author Patrick Seewald
16 ! **************************************************************************************************
17 MODULE dbt_api
18 
24  dbt_iterator_type
26  USE dbt_io, ONLY: dbt_write_blocks,&
30  USE dbt_methods, ONLY: &
33  dbt_get_stored_coordinates, dbt_put_block, dbt_reserve_blocks
34  USE dbt_split, ONLY: dbt_split_blocks
35  USE dbt_test, ONLY: dbt_checksum,&
37  USE dbt_types, ONLY: &
40  dbt_distribution_type, dbt_filter, dbt_finalize, dbt_get_info, dbt_get_num_blocks, &
42  dbt_mp_dims_create, dbt_mp_environ_pgrid => mp_environ_pgrid, dbt_nblks_local, &
44  dbt_ndims_matrix_column => ndims_matrix_column, dbt_ndims_matrix_row => ndims_matrix_row, &
46  dbt_pgrid_type, dbt_scale, dbt_type
47 
48  IMPLICIT NONE
49 
50  PRIVATE
51 
52  CHARACTER(len=*), PARAMETER, PRIVATE :: moduleN = 'dbt_api'
53 
55  PUBLIC :: dbt_get_block
56  PUBLIC :: dbt_get_stored_coordinates
57  PUBLIC :: dbt_put_block
58  PUBLIC :: dbt_reserve_blocks
59  PUBLIC :: dbt_create
60  PUBLIC :: dbt_destroy
61  PUBLIC :: dbt_distribution_destroy
62  PUBLIC :: dbt_distribution_new
63  PUBLIC :: dbt_distribution_type
64  PUBLIC :: dbt_nd_mp_comm
65  PUBLIC :: dbt_nd_mp_free
66  PUBLIC :: dbt_type
67  PUBLIC :: dbt_iterator_next_block
68  PUBLIC :: dbt_iterator_blocks_left
69  PUBLIC :: dbt_iterator_stop
70  PUBLIC :: dbt_iterator_start
71  PUBLIC :: dbt_iterator_type
72  PUBLIC :: dbt_iterator_num_blocks
73  PUBLIC :: dbt_split_blocks
74  PUBLIC :: dbt_pgrid_type
75  PUBLIC :: dbt_pgrid_create
76  PUBLIC :: dbt_pgrid_create_expert
77  PUBLIC :: dbt_pgrid_destroy
78  PUBLIC :: dbt_filter
79  PUBLIC :: dbt_mp_environ_pgrid
81  PUBLIC :: dbt_blk_sizes
82  PUBLIC :: dbt_copy
84  PUBLIC :: dbt_get_info
85  PUBLIC :: dbt_checksum
86  PUBLIC :: dbt_finalize
87  PUBLIC :: dbt_scale
90  PUBLIC :: dbt_clear
91  PUBLIC :: dbt_get_mapping_info
92  PUBLIC :: dbt_write_split_info
93  PUBLIC :: dbt_write_blocks
94  PUBLIC :: dbt_write_tensor_dist
95  PUBLIC :: dbt_write_tensor_info
96  PUBLIC :: dbt_mp_dims_create
99  PUBLIC :: dbt_ndims
100  PUBLIC :: dbt_dims
101  PUBLIC :: dbt_pgrid_change_dims
102  PUBLIC :: dbt_ndims_matrix_row
103  PUBLIC :: dbt_ndims_matrix_column
104  PUBLIC :: dbt_nblks_local
105  PUBLIC :: dbt_nblks_total
106  PUBLIC :: dbt_blk_size
107  PUBLIC :: dbt_max_nblks_local
108  PUBLIC :: dbt_default_distvec
109 
110 END MODULE dbt_api
This is the start of a dbt_api, all publically needed functions are exported here....
Definition: dbt_api.F:17
Methods to operate on n-dimensional tensor blocks.
Definition: dbt_block.F:12
integer function, public dbt_iterator_num_blocks(iterator)
Generalization of block_iterator_num_blocks for tensors.
Definition: dbt_block.F:185
logical function, public dbt_iterator_blocks_left(iterator)
Generalization of block_iterator_blocks_left for tensors.
Definition: dbt_block.F:197
subroutine, public dbt_iterator_stop(iterator)
Generalization of block_iterator_stop for tensors.
Definition: dbt_block.F:134
subroutine, public dbt_iterator_start(iterator, tensor)
Generalization of block_iterator_start for tensors.
Definition: dbt_block.F:121
subroutine, public dbt_iterator_next_block(iterator, ind_nd, blk_size, blk_offset)
iterate over nd blocks of an nd rank tensor, index only (blocks must be retrieved by calling dbt_get_...
Definition: dbt_block.F:161
tensor index and mapping to DBM index
Definition: dbt_index.F:12
pure subroutine, public dbt_get_mapping_info(map, ndim_nd, ndim1_2d, ndim2_2d, dims_2d_i8, dims_2d, dims_nd, dims1_2d, dims2_2d, map1_2d, map2_2d, map_nd, base, col_major)
get mapping info
Definition: dbt_index.F:176
DBT tensor Input / Output.
Definition: dbt_io.F:12
subroutine, public dbt_write_blocks(tensor, io_unit_master, io_unit_all, write_int)
Write all tensor blocks.
Definition: dbt_io.F:212
subroutine, public dbt_write_tensor_info(tensor, unit_nr, full_info)
Write tensor global info: block dimensions, full dimensions and process grid dimensions.
Definition: dbt_io.F:50
subroutine, public dbt_write_tensor_dist(tensor, unit_nr)
Write info on tensor distribution & load balance.
Definition: dbt_io.F:161
subroutine, public dbt_write_split_info(pgrid, unit_nr)
Definition: dbt_io.F:401
DBT tensor framework for block-sparse tensor contraction. Representation of n-rank tensors as DBT tal...
Definition: dbt_methods.F:16
subroutine, public dbt_copy(tensor_in, tensor_out, order, summation, bounds, move_data, unit_nr)
Copy tensor data. Redistributes tensor data according to distributions of target and source tensor....
Definition: dbt_methods.F:114
subroutine, public dbt_batched_contract_finalize(tensor, unit_nr)
finalize batched contraction. This performs all communication that has been postponed in the contract...
Definition: dbt_methods.F:2176
subroutine, public dbt_copy_matrix_to_tensor(matrix_in, tensor_out, summation)
copy matrix to tensor.
Definition: dbt_methods.F:325
subroutine, public dbt_contract(alpha, tensor_1, tensor_2, beta, tensor_3, contract_1, notcontract_1, contract_2, notcontract_2, map_1, map_2, bounds_1, bounds_2, bounds_3, optimize_dist, pgrid_opt_1, pgrid_opt_2, pgrid_opt_3, filter_eps, flop, move_data, retain_sparsity, unit_nr, log_verbose)
Contract tensors by multiplying matrix representations. tensor_3(map_1, map_2) := alpha * tensor_1(no...
Definition: dbt_methods.F:499
subroutine, public dbt_copy_tensor_to_matrix(tensor_in, matrix_out, summation)
copy tensor to matrix
Definition: dbt_methods.F:386
subroutine, public dbt_batched_contract_init(tensor, batch_range_1, batch_range_2, batch_range_3, batch_range_4)
Initialize batched contraction for this tensor.
Definition: dbt_methods.F:2092
Routines to split blocks and to convert between tensors with different block sizes.
Definition: dbt_split.F:12
subroutine, public dbt_split_blocks(tensor_in, tensor_out, block_sizes, nodata)
Split tensor blocks into smaller blocks of maximum size PRODUCT(block_sizes).
Definition: dbt_split.F:455
General methods for testing DBT tensors.
Definition: dbt_test.F:12
real(kind=dp) function, public dbt_checksum(tensor)
checksum of a tensor consistent with block_checksum
Definition: dbt_test.F:1185
subroutine, public dbt_contract_test(alpha, tensor_1, tensor_2, beta, tensor_3, contract_1, notcontract_1, contract_2, notcontract_2, map_1, map_2, unit_nr, bounds_1, bounds_2, bounds_3, log_verbose, write_int)
test tensor contraction
Definition: dbt_test.F:833
DBT tensor framework for block-sparse tensor contraction: Types and create/destroy routines.
Definition: dbt_types.F:12
subroutine, public dbt_pgrid_destroy(pgrid, keep_comm)
destroy process grid
Definition: dbt_types.F:905
subroutine, public dbt_distribution_new(dist, pgrid, nd_dist_1, nd_dist_2, nd_dist_3, nd_dist_4)
Create a tensor distribution.
Definition: dbt_types.F:886
subroutine, public dims_tensor(tensor, dims)
tensor dimensions
Definition: dbt_types.F:1238
type(dbt_pgrid_type) function, public 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 tenso...
Definition: dbt_types.F:653
subroutine, public dbt_blk_sizes(tensor, ind, blk_size)
Size of tensor block.
Definition: dbt_types.F:1479
subroutine, public dbt_destroy(tensor)
Destroy a tensor.
Definition: dbt_types.F:1410
pure integer function, public dbt_max_nblks_local(tensor)
returns an estimate of maximum number of local blocks in tensor (irrespective of the actual number of...
Definition: dbt_types.F:1850
recursive subroutine, public dbt_mp_dims_create(nodes, dims, tensor_dims, lb_ratio)
Create process grid dimensions corresponding to one dimension of the matrix representation of a tenso...
Definition: dbt_types.F:498
subroutine, public 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.
Definition: dbt_types.F:1656
pure integer function, public ndims_tensor(tensor)
tensor rank
Definition: dbt_types.F:1227
pure integer function, public dbt_nblks_total(tensor, idim)
total numbers of blocks along dimension idim
Definition: dbt_types.F:1617
pure integer function, public dbt_blk_size(tensor, ind, idim)
block size of block with index ind along dimension idim
Definition: dbt_types.F:1827
pure integer function, public dbt_get_num_blocks(tensor)
As block_get_num_blocks: get number of local blocks.
Definition: dbt_types.F:1759
subroutine, public dbt_default_distvec(nblk, nproc, blk_size, dist)
get a load-balanced and randomized distribution along one tensor dimension
Definition: dbt_types.F:1876
subroutine, public 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 s...
Definition: dbt_types.F:594
subroutine, public dbt_clear(tensor)
Clear tensor (s.t. it does not contain any blocks)
Definition: dbt_types.F:1779
subroutine, public dbt_finalize(tensor)
Finalize tensor, as block_finalize. This should be taken care of internally in DBT tensors,...
Definition: dbt_types.F:1790
integer(kind=int_8) function, public dbt_get_nze_total(tensor)
Definition: dbt_types.F:1817
pure integer function, public dbt_nblks_local(tensor, idim)
local number of blocks along dimension idim
Definition: dbt_types.F:1600
subroutine, public mp_environ_pgrid(pgrid, dims, task_coor)
as mp_environ but for special pgrid type
Definition: dbt_types.F:768
pure integer function, public dbt_get_nze(tensor)
Definition: dbt_types.F:1808
subroutine, public dbt_pgrid_create(mp_comm, dims, pgrid, tensor_dims)
Definition: dbt_types.F:1525
integer(kind=int_8) function, public dbt_get_num_blocks_total(tensor)
Get total number of blocks.
Definition: dbt_types.F:1769
pure integer(int_8) function, public ndims_matrix_row(tensor)
how many tensor dimensions are mapped to matrix row
Definition: dbt_types.F:1204
subroutine, public dbt_pgrid_change_dims(pgrid, pdims)
change dimensions of an existing process grid.
Definition: dbt_types.F:1559
pure integer(int_8) function, public ndims_matrix_column(tensor)
how many tensor dimensions are mapped to matrix column
Definition: dbt_types.F:1216
subroutine, public dbt_nd_mp_free(mp_comm)
Release the MPI communicator.
Definition: dbt_types.F:733
subroutine, public dbt_filter(tensor, eps)
As block_filter.
Definition: dbt_types.F:1588
subroutine, public dbt_distribution_destroy(dist)
Destroy tensor distribution.
Definition: dbt_types.F:926
subroutine, public dbt_scale(tensor, alpha)
as block_scale
Definition: dbt_types.F:1799