(git:374b731)
Loading...
Searching...
No Matches
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! **************************************************************************************************
17MODULE dbt_api
18
26 USE dbt_io, ONLY: dbt_write_blocks,&
30 USE dbt_methods, ONLY: &
33 dbt_get_stored_coordinates, dbt_put_block, dbt_reserve_blocks
35 USE dbt_test, ONLY: dbt_checksum,&
37 USE dbt_types, ONLY: &
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, &
47
48 IMPLICIT NONE
49
50 PRIVATE
51
52 CHARACTER(len=*), PARAMETER, PRIVATE :: moduleN = 'dbt_api'
53
55 PUBLIC :: dbt_get_block
57 PUBLIC :: dbt_put_block
58 PUBLIC :: dbt_reserve_blocks
59 PUBLIC :: dbt_create
60 PUBLIC :: dbt_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
69 PUBLIC :: dbt_iterator_stop
70 PUBLIC :: dbt_iterator_start
71 PUBLIC :: dbt_iterator_type
73 PUBLIC :: dbt_split_blocks
74 PUBLIC :: dbt_pgrid_type
75 PUBLIC :: dbt_pgrid_create
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
110END 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....
subroutine, public dbt_batched_contract_finalize(tensor, unit_nr)
finalize batched contraction. This performs all communication that has been postponed in the contract...
subroutine, public dbt_copy_matrix_to_tensor(matrix_in, tensor_out, summation)
copy matrix to tensor.
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...
subroutine, public dbt_copy_tensor_to_matrix(tensor_in, matrix_out, summation)
copy tensor to matrix
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.
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
subroutine, public dbt_get_stored_coordinates(tensor, ind_nd, processor)
Generalization of block_get_stored_coordinates for tensors.
Definition dbt_types.F:1510
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