13 dbcsr_clear_mempools, dbcsr_clear_prv =>
dbcsr_clear, &
15 dbcsr_convert_offsets_to_sizes, dbcsr_convert_sizes_to_offsets, &
18 dbcsr_csr_dbcsr_blkrow_dist, dbcsr_csr_destroy, dbcsr_csr_eqrow_floor_dist, &
19 dbcsr_csr_p_type, dbcsr_csr_print_sparsity, dbcsr_csr_type, &
20 dbcsr_csr_type_real_8 => dbcsr_type_real_8, dbcsr_csr_write, &
42 dbcsr_no_transpose, dbcsr_print_config, dbcsr_print_statistics, &
46 dbcsr_run_tests, dbcsr_scale_prv =>
dbcsr_scale, dbcsr_set_config, &
49 dbcsr_type_antisymmetric, dbcsr_type_complex_8, dbcsr_type_no_symmetry, &
50 dbcsr_type_prv =>
dbcsr_type, dbcsr_type_real_8, dbcsr_type_symmetric, &
59#include "../base/base_uses.f90"
65 PUBLIC :: dbcsr_type_no_symmetry
66 PUBLIC :: dbcsr_type_symmetric
67 PUBLIC :: dbcsr_type_antisymmetric
68 PUBLIC :: dbcsr_transpose
69 PUBLIC :: dbcsr_no_transpose
78 PUBLIC :: dbcsr_clear_mempools
79 PUBLIC :: dbcsr_init_lib
80 PUBLIC :: dbcsr_finalize_lib
81 PUBLIC :: dbcsr_set_config
82 PUBLIC :: dbcsr_get_default_config
83 PUBLIC :: dbcsr_print_config
84 PUBLIC :: dbcsr_reset_randmat_seed
86 PUBLIC :: dbcsr_print_statistics
144 PUBLIC :: dbcsr_distribution_get_num_images
145 PUBLIC :: dbcsr_convert_offsets_to_sizes
146 PUBLIC :: dbcsr_convert_sizes_to_offsets
147 PUBLIC :: dbcsr_run_tests
148 PUBLIC :: dbcsr_test_mm
152 PUBLIC :: dbcsr_csr_type
153 PUBLIC :: dbcsr_csr_p_type
157 PUBLIC :: dbcsr_csr_destroy
158 PUBLIC :: dbcsr_csr_create
159 PUBLIC :: dbcsr_csr_eqrow_floor_dist
160 PUBLIC :: dbcsr_csr_dbcsr_blkrow_dist
161 PUBLIC :: dbcsr_csr_print_sparsity
162 PUBLIC :: dbcsr_csr_write
164 PUBLIC :: dbcsr_csr_type_real_8
176 TYPE(dbcsr_type_prv) :: dbcsr = dbcsr_type_prv()
182 TYPE(dbcsr_distribution_type_prv) :: dbcsr = dbcsr_distribution_type_prv()
188 TYPE(dbcsr_iterator_type_prv) :: dbcsr = dbcsr_iterator_type_prv()
193 MODULE PROCEDURE dbcsr_create_new, dbcsr_create_template
196 LOGICAL,
PARAMETER,
PRIVATE :: USE_DBCSR_BACKEND = .true.
207 IF (
ASSOCIATED(matrix))
THEN
222 IF (
ASSOCIATED(matrix))
THEN
237 CALL cp_abort(__location__, &
238 'You should not "deallocate" a referenced matrix. '// &
239 'Avoid pointers to DBCSR matrices.')
250 SUBROUTINE dbcsr_add(matrix_a, matrix_b, alpha_scalar, beta_scalar)
253 REAL(kind=
dp),
INTENT(IN) :: alpha_scalar, beta_scalar
255 IF (use_dbcsr_backend)
THEN
256 CALL dbcsr_add_prv(matrix_a%dbcsr, matrix_b%dbcsr, alpha_scalar, beta_scalar)
258 IF (alpha_scalar /= 1.0_dp .OR. beta_scalar /= 1.0_dp) cpabort(
"Not yet implemented for DBM.")
259 CALL dbm_add(matrix_a%dbm, matrix_b%dbm)
270 CHARACTER(len=*),
INTENT(IN) :: filepath
274 IF (use_dbcsr_backend)
THEN
275 CALL dbcsr_binary_read_prv(filepath, distribution%dbcsr, matrix_new%dbcsr)
277 cpabort(
"Not yet implemented for DBM.")
288 CHARACTER(LEN=*),
INTENT(IN) :: filepath
290 IF (use_dbcsr_backend)
THEN
291 CALL dbcsr_binary_write_prv(matrix%dbcsr, filepath)
293 cpabort(
"Not yet implemented for DBM.")
304 IF (use_dbcsr_backend)
THEN
305 CALL dbcsr_clear_prv(matrix%dbcsr)
320 IF (use_dbcsr_backend)
THEN
321 CALL dbcsr_complete_redistribute_prv(matrix%dbcsr, redist%dbcsr)
334 TYPE(dbcsr_csr_type),
INTENT(INOUT) :: csr_mat
336 IF (use_dbcsr_backend)
THEN
337 CALL convert_csr_to_dbcsr_prv(dbcsr_mat%dbcsr, csr_mat)
339 cpabort(
"Not yet implemented for DBM.")
350 TYPE(dbcsr_csr_type),
INTENT(INOUT) :: csr_mat
352 IF (use_dbcsr_backend)
THEN
353 CALL convert_dbcsr_to_csr_prv(dbcsr_mat%dbcsr, csr_mat)
355 cpabort(
"Not yet implemented for DBM.")
367 SUBROUTINE dbcsr_copy(matrix_b, matrix_a, name, keep_sparsity, keep_imaginary)
370 CHARACTER(LEN=*),
INTENT(IN),
OPTIONAL :: name
371 LOGICAL,
INTENT(IN),
OPTIONAL :: keep_sparsity, keep_imaginary
373 IF (use_dbcsr_backend)
THEN
374 CALL dbcsr_copy_prv(matrix_b%dbcsr, matrix_a%dbcsr, name=name, &
375 keep_sparsity=keep_sparsity, keep_imaginary=keep_imaginary)
377 IF (
PRESENT(name) .OR.
PRESENT(keep_sparsity) .OR.
PRESENT(keep_imaginary))
THEN
378 cpabort(
"Not yet implemented for DBM.")
380 CALL dbm_copy(matrix_b%dbm, matrix_a%dbm)
395 SUBROUTINE dbcsr_create_new(matrix, name, dist, matrix_type, row_blk_size, col_blk_size, &
396 reuse_arrays, mutable_work)
398 CHARACTER(len=*),
INTENT(IN) :: name
400 CHARACTER,
INTENT(IN) :: matrix_type
401 INTEGER,
DIMENSION(:),
INTENT(INOUT),
POINTER :: row_blk_size, col_blk_size
402 LOGICAL,
INTENT(IN),
OPTIONAL :: reuse_arrays, mutable_work
404 IF (use_dbcsr_backend)
THEN
405 CALL dbcsr_create_prv(matrix=matrix%dbcsr, name=name, dist=dist%dbcsr, &
406 matrix_type=matrix_type, row_blk_size=row_blk_size, &
407 col_blk_size=col_blk_size, nze=0, data_type=dbcsr_type_real_8, &
408 reuse_arrays=reuse_arrays, mutable_work=mutable_work)
410 cpabort(
"Not yet implemented for DBM.")
412 END SUBROUTINE dbcsr_create_new
426 SUBROUTINE dbcsr_create_template(matrix, name, template, dist, matrix_type, &
427 row_blk_size, col_blk_size, reuse_arrays, mutable_work)
429 CHARACTER(len=*),
INTENT(IN),
OPTIONAL :: name
433 CHARACTER,
INTENT(IN),
OPTIONAL :: matrix_type
434 INTEGER,
DIMENSION(:),
INTENT(INOUT),
OPTIONAL, &
435 POINTER :: row_blk_size, col_blk_size
436 LOGICAL,
INTENT(IN),
OPTIONAL :: reuse_arrays, mutable_work
438 IF (use_dbcsr_backend)
THEN
439 CALL dbcsr_create_prv(matrix=matrix%dbcsr, name=name, template=template%dbcsr, &
440 dist=dist%dbcsr, matrix_type=matrix_type, &
441 row_blk_size=row_blk_size, col_blk_size=col_blk_size, &
442 nze=0, data_type=dbcsr_type_real_8, reuse_arrays=reuse_arrays, &
443 mutable_work=mutable_work)
445 cpabort(
"Not yet implemented for DBM.")
447 END SUBROUTINE dbcsr_create_template
460 TYPE(dbcsr_csr_type),
INTENT(OUT) :: csr_mat
461 INTEGER :: dist_format
462 TYPE(
dbcsr_type),
INTENT(IN),
OPTIONAL :: csr_sparsity
463 INTEGER,
INTENT(IN),
OPTIONAL :: numnodes
465 IF (use_dbcsr_backend)
THEN
466 IF (
PRESENT(csr_sparsity))
THEN
467 CALL dbcsr_csr_create_from_dbcsr_prv(dbcsr_mat%dbcsr, csr_mat, dist_format, &
468 csr_sparsity%dbcsr, numnodes)
470 CALL dbcsr_csr_create_from_dbcsr_prv(dbcsr_mat%dbcsr, csr_mat, &
471 dist_format, numnodes=numnodes)
474 cpabort(
"Not yet implemented for DBM.")
486 TYPE(
dbcsr_type),
INTENT(IN) :: rmatrix, imatrix
487 TYPE(dbcsr_csr_type),
INTENT(INOUT) :: csr_mat
488 INTEGER :: dist_format
490 COMPLEX(KIND=dp),
PARAMETER :: ione = cmplx(0.0_dp, 1.0_dp, kind=
dp), &
491 rone = cmplx(1.0_dp, 0.0_dp, kind=
dp)
495 IF (use_dbcsr_backend)
THEN
496 CALL dbcsr_create_prv(tmp_matrix%dbcsr, template=rmatrix%dbcsr, data_type=dbcsr_type_complex_8)
497 CALL dbcsr_create_prv(cmatrix%dbcsr, template=rmatrix%dbcsr, data_type=dbcsr_type_complex_8)
498 CALL dbcsr_copy_prv(cmatrix%dbcsr, rmatrix%dbcsr)
499 CALL dbcsr_copy_prv(tmp_matrix%dbcsr, imatrix%dbcsr)
500 CALL dbcsr_add_prv(cmatrix%dbcsr, tmp_matrix%dbcsr, rone, ione)
501 CALL dbcsr_release_prv(tmp_matrix%dbcsr)
503 CALL dbcsr_csr_create_from_dbcsr_prv(cmatrix%dbcsr, csr_mat, dist_format)
504 CALL convert_dbcsr_to_csr_prv(cmatrix%dbcsr, csr_mat)
505 CALL dbcsr_release_prv(cmatrix%dbcsr)
507 cpabort(
"Not yet implemented for DBM.")
520 IF (use_dbcsr_backend)
THEN
521 CALL dbcsr_desymmetrize_prv(matrix_a%dbcsr, matrix_b%dbcsr)
523 cpabort(
"Not yet implemented for DBM.")
534 IF (use_dbcsr_backend)
THEN
535 CALL dbcsr_distribute_prv(matrix%dbcsr)
537 cpabort(
"Not yet implemented for DBM.")
562 group, mynode, numnodes, nprows, npcols, myprow, mypcol, &
563 pgrid, subgroups_defined, prow_group, pcol_group)
565 INTEGER,
DIMENSION(:),
OPTIONAL,
POINTER :: row_dist, col_dist
566 INTEGER,
INTENT(OUT),
OPTIONAL :: nrows, ncols
567 LOGICAL,
INTENT(OUT),
OPTIONAL :: has_threads
568 INTEGER,
INTENT(OUT),
OPTIONAL :: group, mynode, numnodes, nprows, npcols, &
570 INTEGER,
DIMENSION(:, :),
OPTIONAL,
POINTER :: pgrid
571 LOGICAL,
INTENT(OUT),
OPTIONAL :: subgroups_defined
572 INTEGER,
INTENT(OUT),
OPTIONAL :: prow_group, pcol_group
574 IF (use_dbcsr_backend)
THEN
575 CALL dbcsr_distribution_get_prv(dist%dbcsr, row_dist, col_dist, nrows, ncols, has_threads, &
576 group, mynode, numnodes, nprows, npcols, myprow, mypcol, &
577 pgrid, subgroups_defined, prow_group, pcol_group)
579 cpabort(
"Not yet implemented for DBM.")
590 IF (use_dbcsr_backend)
THEN
591 CALL dbcsr_distribution_hold_prv(dist%dbcsr)
593 cpabort(
"Not yet implemented for DBM.")
611 INTEGER,
INTENT(IN),
OPTIONAL :: group
612 INTEGER,
DIMENSION(:, :),
OPTIONAL,
POINTER :: pgrid
613 INTEGER,
DIMENSION(:),
INTENT(INOUT),
POINTER :: row_dist, col_dist
614 LOGICAL,
INTENT(IN),
OPTIONAL :: reuse_arrays
616 IF (use_dbcsr_backend)
THEN
617 CALL dbcsr_distribution_new_prv(dist%dbcsr, template%dbcsr, group, pgrid, &
618 row_dist, col_dist, reuse_arrays)
620 cpabort(
"Not yet implemented for DBM.")
631 IF (use_dbcsr_backend)
THEN
632 CALL dbcsr_distribution_release_prv(dist%dbcsr)
634 cpabort(
"Not yet implemented for DBM.")
645 REAL(
dp),
INTENT(IN) :: eps
647 IF (use_dbcsr_backend)
THEN
648 CALL dbcsr_filter_prv(matrix%dbcsr, eps)
650 cpabort(
"Not yet implemented for DBM.")
661 IF (use_dbcsr_backend)
THEN
662 CALL dbcsr_finalize_prv(matrix%dbcsr)
664 cpabort(
"Not yet implemented for DBM.")
680 INTEGER,
INTENT(IN) :: row, col
681 REAL(kind=
dp),
DIMENSION(:, :),
POINTER :: block
682 LOGICAL,
INTENT(OUT) :: found
683 INTEGER,
INTENT(OUT),
OPTIONAL :: row_size, col_size
685 IF (use_dbcsr_backend)
THEN
686 CALL dbcsr_get_block_p_prv(matrix%dbcsr, row, col, block, found, row_size, col_size)
688 cpabort(
"Not yet implemented for DBM.")
704 TYPE(
dbcsr_type),
INTENT(IN),
TARGET :: matrix
705 INTEGER,
INTENT(IN) :: row, col
706 REAL(kind=
dp),
DIMENSION(:, :),
POINTER :: block
707 LOGICAL,
INTENT(OUT) :: found
708 INTEGER,
INTENT(OUT),
OPTIONAL :: row_size, col_size
719 IF (use_dbcsr_backend)
THEN
721 CALL dbcsr_get_block_p_prv(matrix_p%dbcsr, row, col, block, found, row_size, col_size)
723 cpabort(
"Not yet implemented for DBM.")
736 INTEGER,
INTENT(IN),
OPTIONAL :: lb, ub
737 REAL(kind=
dp),
DIMENSION(:),
POINTER :: res
739 IF (use_dbcsr_backend)
THEN
740 res => dbcsr_get_data_p_prv(matrix%dbcsr, select_data_type=0.0_dp, lb=lb, ub=ub)
742 cpabort(
"Not yet implemented for DBM.")
755 IF (use_dbcsr_backend)
THEN
756 data_size = dbcsr_get_data_size_prv(matrix%dbcsr)
758 cpabort(
"Not yet implemented for DBM.")
789 nfullrows_total, nfullcols_total, nblkrows_local, nblkcols_local, &
790 nfullrows_local, nfullcols_local, my_prow, my_pcol, &
791 local_rows, local_cols, proc_row_dist, proc_col_dist, &
792 row_blk_size, col_blk_size, row_blk_offset, col_blk_offset, &
793 distribution, name, matrix_type, group)
795 INTEGER,
INTENT(OUT),
OPTIONAL :: nblkrows_total, nblkcols_total, nfullrows_total, &
796 nfullcols_total, nblkrows_local, nblkcols_local, nfullrows_local, nfullcols_local, &
798 INTEGER,
DIMENSION(:),
OPTIONAL,
POINTER :: local_rows, local_cols, proc_row_dist, &
799 proc_col_dist, row_blk_size, col_blk_size, row_blk_offset, col_blk_offset
801 OPTIONAL :: distribution
802 CHARACTER(len=*),
INTENT(OUT),
OPTIONAL :: name
803 CHARACTER,
INTENT(OUT),
OPTIONAL :: matrix_type
806 INTEGER :: group_handle
807 TYPE(dbcsr_distribution_type_prv) :: my_distribution
809 IF (use_dbcsr_backend)
THEN
810 CALL dbcsr_get_info_prv(matrix=matrix%dbcsr, &
811 nblkrows_total=nblkrows_total, &
812 nblkcols_total=nblkcols_total, &
813 nfullrows_total=nfullrows_total, &
814 nfullcols_total=nfullcols_total, &
815 nblkrows_local=nblkrows_local, &
816 nblkcols_local=nblkcols_local, &
817 nfullrows_local=nfullrows_local, &
818 nfullcols_local=nfullcols_local, &
821 local_rows=local_rows, &
822 local_cols=local_cols, &
823 proc_row_dist=proc_row_dist, &
824 proc_col_dist=proc_col_dist, &
825 row_blk_size=row_blk_size, &
826 col_blk_size=col_blk_size, &
827 row_blk_offset=row_blk_offset, &
828 col_blk_offset=col_blk_offset, &
829 distribution=my_distribution, &
831 matrix_type=matrix_type, &
834 IF (
PRESENT(distribution)) distribution%dbcsr = my_distribution
835 IF (
PRESENT(group))
CALL group%set_handle(group_handle)
837 cpabort(
"Not yet implemented for DBM.")
848 CHARACTER :: matrix_type
850 IF (use_dbcsr_backend)
THEN
851 matrix_type = dbcsr_get_matrix_type_prv(matrix%dbcsr)
853 cpabort(
"Not yet implemented for DBM.")
864 INTEGER :: num_blocks
866 IF (use_dbcsr_backend)
THEN
867 num_blocks = dbcsr_get_num_blocks_prv(matrix%dbcsr)
869 cpabort(
"Not yet implemented for DBM.")
880 REAL(kind=
dp) :: occupation
882 IF (use_dbcsr_backend)
THEN
883 occupation = dbcsr_get_occupation_prv(matrix%dbcsr)
885 cpabort(
"Not yet implemented for DBM.")
898 INTEGER,
INTENT(IN) :: row, column
899 INTEGER,
INTENT(OUT) :: processor
901 IF (use_dbcsr_backend)
THEN
902 CALL dbcsr_get_stored_coordinates_prv(matrix%dbcsr, row, column, processor)
904 cpabort(
"Not yet implemented for DBM.")
915 LOGICAL :: has_symmetry
917 IF (use_dbcsr_backend)
THEN
918 has_symmetry = dbcsr_has_symmetry_prv(matrix%dbcsr)
920 cpabort(
"Not yet implemented for DBM.")
931 LOGICAL :: blocks_left
933 IF (use_dbcsr_backend)
THEN
934 blocks_left = dbcsr_iterator_blocks_left_prv(iterator%dbcsr)
936 cpabort(
"Not yet implemented for DBM.")
953 block_number_argument_has_been_removed, &
954 row_size, col_size, &
955 row_offset, col_offset)
957 INTEGER,
INTENT(OUT),
OPTIONAL :: row, column
958 REAL(kind=
dp),
DIMENSION(:, :),
OPTIONAL,
POINTER :: block
959 LOGICAL,
OPTIONAL :: block_number_argument_has_been_removed
960 INTEGER,
INTENT(OUT),
OPTIONAL :: row_size, col_size, row_offset, &
963 INTEGER :: my_column, my_row
964 REAL(kind=
dp),
DIMENSION(:, :),
POINTER :: my_block
966 cpassert(.NOT.
PRESENT(block_number_argument_has_been_removed))
968 IF (use_dbcsr_backend)
THEN
969 CALL dbcsr_iterator_next_block_prv(iterator%dbcsr, row=my_row, column=my_column, &
970 block=my_block, row_size=row_size, col_size=col_size, &
971 row_offset=row_offset, col_offset=col_offset)
972 IF (
PRESENT(block)) block => my_block
973 IF (
PRESENT(row)) row = my_row
974 IF (
PRESENT(column)) column = my_column
976 cpabort(
"Not yet implemented for DBM.")
991 LOGICAL,
INTENT(IN),
OPTIONAL :: shared, dynamic, dynamic_byrows
993 IF (use_dbcsr_backend)
THEN
994 CALL dbcsr_iterator_start_prv(iterator%dbcsr, matrix%dbcsr, shared, dynamic, dynamic_byrows)
996 cpabort(
"Not yet implemented for DBM.")
1012 LOGICAL,
INTENT(IN),
OPTIONAL :: shared, dynamic, dynamic_byrows
1014 IF (use_dbcsr_backend)
THEN
1015 CALL dbcsr_iterator_start_prv(iterator%dbcsr, matrix%dbcsr, shared, dynamic, &
1016 dynamic_byrows, read_only=.true.)
1018 cpabort(
"Not yet implemented for DBM.")
1029 IF (use_dbcsr_backend)
THEN
1030 CALL dbcsr_iterator_stop_prv(iterator%dbcsr)
1032 cpabort(
"Not yet implemented for DBM.")
1043 IF (use_dbcsr_backend)
THEN
1044 CALL dbcsr_mp_grid_setup_prv(dist%dbcsr)
1046 cpabort(
"Not yet implemented for DBM.")
1070 matrix_c, first_row, last_row, &
1071 first_column, last_column, first_k, last_k, &
1072 retain_sparsity, filter_eps, flop)
1073 CHARACTER(LEN=1),
INTENT(IN) :: transa, transb
1074 REAL(kind=
dp),
INTENT(IN) :: alpha
1075 TYPE(
dbcsr_type),
INTENT(IN) :: matrix_a, matrix_b
1076 REAL(kind=
dp),
INTENT(IN) :: beta
1078 INTEGER,
INTENT(IN),
OPTIONAL :: first_row, last_row, first_column, &
1079 last_column, first_k, last_k
1080 LOGICAL,
INTENT(IN),
OPTIONAL :: retain_sparsity
1081 REAL(kind=
dp),
INTENT(IN),
OPTIONAL :: filter_eps
1082 INTEGER(int_8),
INTENT(OUT),
OPTIONAL :: flop
1084 IF (use_dbcsr_backend)
THEN
1085 CALL dbcsr_multiply_prv(transa, transb, alpha, matrix_a%dbcsr, matrix_b%dbcsr, beta, &
1086 matrix_c%dbcsr, first_row, last_row, first_column, last_column, &
1087 first_k, last_k, retain_sparsity, filter_eps=filter_eps, flop=flop)
1089 cpabort(
"Not yet implemented for DBM.")
1103 INTEGER,
INTENT(IN) :: row, col
1104 REAL(kind=
dp),
DIMENSION(:, :),
INTENT(IN) :: block
1105 LOGICAL,
INTENT(IN),
OPTIONAL :: summation
1107 IF (use_dbcsr_backend)
THEN
1108 CALL dbcsr_put_block_prv(matrix%dbcsr, row, col, block, summation=summation)
1110 cpabort(
"Not yet implemented for DBM.")
1121 IF (use_dbcsr_backend)
THEN
1122 CALL dbcsr_release_prv(matrix%dbcsr)
1124 cpabort(
"Not yet implemented for DBM.")
1135 IF (use_dbcsr_backend)
THEN
1136 CALL dbcsr_replicate_all_prv(matrix%dbcsr)
1138 cpabort(
"Not yet implemented for DBM.")
1150 INTEGER,
DIMENSION(:),
INTENT(IN) :: rows, cols
1152 IF (use_dbcsr_backend)
THEN
1153 CALL dbcsr_reserve_blocks_prv(matrix%dbcsr, rows, cols)
1155 cpabort(
"Not yet implemented for DBM.")
1166 REAL(kind=
dp),
INTENT(IN) :: alpha_scalar
1168 IF (use_dbcsr_backend)
THEN
1169 CALL dbcsr_scale_prv(matrix%dbcsr, alpha_scalar)
1171 CALL dbm_scale(matrix%dbm, alpha_scalar)
1182 REAL(kind=
dp),
INTENT(IN) :: alpha
1184 IF (use_dbcsr_backend)
THEN
1185 CALL dbcsr_set_prv(matrix%dbcsr, alpha)
1187 IF (alpha == 0.0_dp)
THEN
1190 cpabort(
"Not yet implemented for DBM.")
1202 IF (use_dbcsr_backend)
THEN
1203 CALL dbcsr_sum_replicated_prv(matrix%dbcsr)
1205 cpabort(
"Not yet implemented for DBM.")
1219 TYPE(
dbcsr_type),
INTENT(INOUT) :: transposed
1221 LOGICAL,
INTENT(IN),
OPTIONAL :: shallow_data_copy, transpose_distribution
1223 OPTIONAL :: use_distribution
1225 IF (use_dbcsr_backend)
THEN
1226 IF (
PRESENT(use_distribution))
THEN
1227 CALL dbcsr_transposed_prv(transposed%dbcsr, normal%dbcsr, &
1228 shallow_data_copy=shallow_data_copy, &
1229 transpose_distribution=transpose_distribution, &
1230 use_distribution=use_distribution%dbcsr)
1232 CALL dbcsr_transposed_prv(transposed%dbcsr, normal%dbcsr, &
1233 shallow_data_copy=shallow_data_copy, &
1234 transpose_distribution=transpose_distribution)
1237 cpabort(
"Not yet implemented for DBM.")
1248 LOGICAL :: valid_index
1250 IF (use_dbcsr_backend)
THEN
1251 valid_index = dbcsr_valid_index_prv(matrix%dbcsr)
1253 valid_index = .true.
1265 INTEGER,
INTENT(IN),
OPTIONAL :: verbosity
1266 LOGICAL,
INTENT(IN),
OPTIONAL :: local
1268 IF (use_dbcsr_backend)
THEN
1269 CALL dbcsr_verify_matrix_prv(matrix%dbcsr, verbosity, local)
1285 INTEGER,
INTENT(IN),
OPTIONAL :: nblks_guess, sizedata_guess, n
1286 LOGICAL,
INTENT(in),
OPTIONAL :: work_mutable
1288 IF (use_dbcsr_backend)
THEN
1289 CALL dbcsr_work_create_prv(matrix%dbcsr, nblks_guess, sizedata_guess, n, work_mutable)
1302 TYPE(
dbcsr_type),
INTENT(IN) :: matrix_a, matrix_b
1303 REAL(kind=
dp),
INTENT(INOUT) :: result
1305 IF (use_dbcsr_backend)
THEN
1306 CALL dbcsr_dot_prv(matrix_a%dbcsr, matrix_b%dbcsr, result)
1308 cpabort(
"Not yet implemented for DBM.")
subroutine, public dbcsr_verify_matrix(matrix, verbosity, local)
...
subroutine, public dbcsr_transposed(transposed, normal, shallow_data_copy, transpose_distribution, use_distribution)
...
subroutine, public dbcsr_distribution_release(dist)
...
logical function, public dbcsr_has_symmetry(matrix)
...
subroutine, public dbcsr_release_p(matrix)
...
integer function, public dbcsr_get_data_size(matrix)
...
subroutine, public dbcsr_get_readonly_block_p(matrix, row, col, block, found, row_size, col_size)
Like dbcsr_get_block_p() but with matrix being INTENT(IN). When invoking this routine,...
subroutine, public dbcsr_scale(matrix, alpha_scalar)
...
subroutine, public dbcsr_convert_dbcsr_to_csr(dbcsr_mat, csr_mat)
...
subroutine, public dbcsr_distribution_new(dist, template, group, pgrid, row_dist, col_dist, reuse_arrays)
...
subroutine, public dbcsr_deallocate_matrix(matrix)
...
subroutine, public dbcsr_iterator_next_block(iterator, row, column, block, block_number_argument_has_been_removed, row_size, col_size, row_offset, col_offset)
...
character function, public dbcsr_get_matrix_type(matrix)
...
logical function, public dbcsr_iterator_blocks_left(iterator)
...
subroutine, public dbcsr_distribution_hold(dist)
...
subroutine, public dbcsr_iterator_stop(iterator)
...
subroutine, public dbcsr_convert_csr_to_dbcsr(dbcsr_mat, csr_mat)
...
logical function, public dbcsr_valid_index(matrix)
...
subroutine, public dbcsr_desymmetrize(matrix_a, matrix_b)
...
subroutine, public dbcsr_copy(matrix_b, matrix_a, name, keep_sparsity, keep_imaginary)
...
subroutine, public dbcsr_get_block_p(matrix, row, col, block, found, row_size, col_size)
...
subroutine, public dbcsr_multiply(transa, transb, alpha, matrix_a, matrix_b, beta, matrix_c, first_row, last_row, first_column, last_column, first_k, last_k, retain_sparsity, filter_eps, flop)
...
subroutine, public dbcsr_replicate_all(matrix)
...
subroutine, public dbcsr_get_info(matrix, nblkrows_total, nblkcols_total, nfullrows_total, nfullcols_total, nblkrows_local, nblkcols_local, nfullrows_local, nfullcols_local, my_prow, my_pcol, local_rows, local_cols, proc_row_dist, proc_col_dist, row_blk_size, col_blk_size, row_blk_offset, col_blk_offset, distribution, name, matrix_type, group)
...
subroutine, public dbcsr_reserve_blocks(matrix, rows, cols)
...
subroutine, public dbcsr_get_stored_coordinates(matrix, row, column, processor)
...
subroutine, public dbcsr_csr_create_and_convert_complex(rmatrix, imatrix, csr_mat, dist_format)
Combines csr_create_from_dbcsr and convert_dbcsr_to_csr to produce a complex CSR matrix.
subroutine, public dbcsr_init_p(matrix)
...
subroutine, public dbcsr_csr_create_from_dbcsr(dbcsr_mat, csr_mat, dist_format, csr_sparsity, numnodes)
...
subroutine, public dbcsr_distribute(matrix)
...
real(kind=dp) function, dimension(:), pointer, public dbcsr_get_data_p(matrix, lb, ub)
...
subroutine, public dbcsr_work_create(matrix, nblks_guess, sizedata_guess, n, work_mutable)
...
subroutine, public dbcsr_sum_replicated(matrix)
...
subroutine, public dbcsr_filter(matrix, eps)
...
subroutine, public dbcsr_binary_write(matrix, filepath)
...
real(kind=dp) function, public dbcsr_get_occupation(matrix)
...
subroutine, public dbcsr_dot_threadsafe(matrix_a, matrix_b, result)
...
subroutine, public dbcsr_finalize(matrix)
...
subroutine, public dbcsr_iterator_start(iterator, matrix, shared, dynamic, dynamic_byrows)
...
subroutine, public dbcsr_set(matrix, alpha)
...
subroutine, public dbcsr_release(matrix)
...
subroutine, public dbcsr_complete_redistribute(matrix, redist)
...
integer function, public dbcsr_get_num_blocks(matrix)
...
subroutine, public dbcsr_iterator_readonly_start(iterator, matrix, shared, dynamic, dynamic_byrows)
Like dbcsr_iterator_start() but with matrix being INTENT(IN). When invoking this routine,...
subroutine, public dbcsr_mp_grid_setup(dist)
...
subroutine, public dbcsr_binary_read(filepath, distribution, matrix_new)
...
subroutine, public dbcsr_clear(matrix)
...
subroutine, public dbcsr_put_block(matrix, row, col, block, summation)
...
subroutine, public dbcsr_add(matrix_a, matrix_b, alpha_scalar, beta_scalar)
...
subroutine, public dbcsr_distribution_get(dist, row_dist, col_dist, nrows, ncols, has_threads, group, mynode, numnodes, nprows, npcols, myprow, mypcol, pgrid, subgroups_defined, prow_group, pcol_group)
...
subroutine, public dbm_redistribute(matrix, redist)
Copies content of matrix_b into matrix_a. Matrices may have different distributions.
subroutine, public dbm_zero(matrix)
Sets all blocks in the given matrix to zero.
subroutine, public dbm_clear(matrix)
Remove all blocks from given matrix, but does not release the underlying memory.
subroutine, public dbm_scale(matrix, alpha)
Multiplies all entries in the given matrix by the given factor alpha.
subroutine, public dbm_add(matrix_a, matrix_b)
Adds matrix_b to matrix_a.
subroutine, public dbm_copy(matrix_a, matrix_b)
Copies content of matrix_b into matrix_a. Matrices must have the same row/col block sizes and distrib...
Defines the basic variable types.
integer, parameter, public int_8
integer, parameter, public dp
Interface to the message passing library MPI.