Modules

ModuleSource FileDescription
dbcsr_acc_device dbcsr_acc_device.F
dbcsr_acc_devmem dbcsr_acc_devmem.F

Accelerator support

dbcsr_acc_event dbcsr_acc_event.F

Accelerator support

dbcsr_acc_hostmem dbcsr_acc_hostmem.F

Accelerator support

dbcsr_acc_init dbcsr_acc_init.F

Accelerator support

dbcsr_acc_operations dbcsr_acc_operations.F

Accelerator support for DBCSR

dbcsr_acc_stream dbcsr_acc_stream.F

Accelerator support

dbcsr_acc_timings dbcsr_acc_timings.F

Accelerator support

dbcsr_allocate_wrap dbcsr_allocate_wrap.F

Wrapper for allocating, copying and reshaping arrays.

Read more…
dbcsr_api dbcsr_api.F

This is the start of a dbcsr_api, all publicly needed functions are exported here. The others remain private to the library. Currently, this is the CP2K used set. Ultimately, a reduced subset and well defined api will remain, possibly grouped in to standard and expert api. Currently, this is work in progress.

dbcsr_api_c dbcsr_api_c.F

PUBLIC :: dbcsr_get_info PUBLIC :: dbcsr_distribution_get PUBLIC :: dbcsr_setname PUBLIC :: dbcsr_get_matrix_type PUBLIC :: dbcsr_get_occupation PUBLIC :: dbcsr_nblkrows_total PUBLIC :: dbcsr_nblkcols_total

Read more…
dbcsr_array_list_methods dbcsr_array_list_methods.F

Representation of arbitrary number of 1d integer arrays with arbitrary sizes. This is needed for generic handling of dimension-specific tensor quantities (such as block index).

dbcsr_array_sort dbcsr_array_sort.F

Routine for sorting an array

Read more…
dbcsr_array_types dbcsr_array_types.F

Array objects with reference counting.

dbcsr_base_hooks dbcsr_base_hooks.F

Central dispatch for basic hooks

dbcsr_blas_operations dbcsr_blas_operations.F

Wrappers to BLAS calls.

dbcsr_block_access dbcsr_block_access.F

DBCSR block access

dbcsr_block_operations dbcsr_block_operations.F

Routines for basic block transformations.

dbcsr_btree dbcsr_btree.F

B-tree

dbcsr_config dbcsr_config.F

Configuration options for DBCSR

dbcsr_csr_conversions dbcsr_csr_conversions.F

DBCSR to CSR matrix format conversion

dbcsr_cuda_profiling dbcsr_cuda_profiling.F

routines for profiling cuda

dbcsr_data_methods dbcsr_data_methods.F

DBCSR data methods

dbcsr_data_methods_low dbcsr_data_methods_low.F

DBCSR data methods

dbcsr_data_operations dbcsr_data_operations.F

DBCSR data operations

dbcsr_data_types dbcsr_data_types.F

Types related to DBCSR data area

dbcsr_dict dbcsr_dict.F

A dictionary (also known as hashtable or hashmap). Internally the dictionary uses an array to holds its data. If this array reaches a load-factor of 75%, a new array with twice the size will be allocated and the items are then copied over. This ensures that the dictionary will perform operations in O(1).

dbcsr_dist_methods dbcsr_dist_methods.F

Routines related to DBCSR distributions

dbcsr_dist_operations dbcsr_dist_operations.F

DBCSR operations on distributions

dbcsr_dist_util dbcsr_dist_util.F

DBCSR sparse matrix utility routines

dbcsr_error_handling dbcsr_error_handling.F

Module that contains the routines for error handling

dbcsr_files dbcsr_files.F

Utility routines to open and close files.

dbcsr_hip_profiling dbcsr_hip_profiling.F
dbcsr_index_operations dbcsr_index_operations.F

Operations on the DBCSR index

dbcsr_io dbcsr_io.F

DBCSR input/output

dbcsr_iter_types dbcsr_iter_types.F

Collection of routines to handle the iteration info

dbcsr_iterator_operations dbcsr_iterator_operations.F

DBCSR iterator operations

dbcsr_kinds dbcsr_kinds.F

Defines the basic variable types

Read more…
dbcsr_lib dbcsr_lib.F

Routines that affect the DBCSR library as a whole

dbcsr_list dbcsr_list.F

An array-based list which grows on demand. When the internal array is full, a new array of twice the size will be allocated and the items are copied over. This list can also be used as a stack. Have look at list_push(), list_pop() and list_peek().

Read more…
dbcsr_list_callstackentry dbcsr_list_callstackentry.F
dbcsr_list_routinereport dbcsr_list_routinereport.F
dbcsr_list_routinestat dbcsr_list_routinestat.F
dbcsr_list_timerenv dbcsr_list_timerenv.F
dbcsr_log_handling dbcsr_log_handling.F

various routines to log and control the output. The idea is that decisions about where to log should not be done in the code that generates the log, but should be globally changeable a central place. So some care has been taken to have enough information about the place from where the log comes so that in the future intelligent and flexible decisions can be taken by the logger, without having to change other code.

Read more…
dbcsr_machine dbcsr_machine.F
dbcsr_machine_internal dbcsr_machine_internal.F

Implementation of machine interface based on Fortran 2003 and POSIX

dbcsr_mem_methods dbcsr_mem_methods.F

DBCSR Memory Pool to avoid slow allocations of accelerator memory

dbcsr_methods dbcsr_methods.F

Base methods on DBCSR data structures

dbcsr_min_heap dbcsr_min_heap.F
dbcsr_mm dbcsr_mm.F

Entry point of the dbcsr matrix-matrix multiplication. Modification history: - 2016-08 Code organization (Alfio Lazzaro).

dbcsr_mm_3d dbcsr_mm_3d.F

3D matrix-matrix multiplication. Modification history: - 2016-08 Code organization (Alfio Lazzaro). - 2017-02 Remove clusters (Alfio Lazzaro).

dbcsr_mm_accdrv dbcsr_mm_accdrv.F

Fourth layer of the dbcsr matrix-matrix multiplication. It hides the differences between performing calculations on the accelerator device or on the CPU. Modification history: - 2010-02-23 Moved from dbcsr_operations - 2011-11 Moved parameter-stack processing routines to dbcsr_mm_methods. - 2013-01 extensive refactoring (Ole Schuett) - 2014-04 generalized into acc-framework (Ole Schuett)

dbcsr_mm_cannon dbcsr_mm_cannon.F

First layer of the dbcsr matrix-matrix multiplication. It performs the MPI parallelization according to Cannon's algorithm. Modification history: - 2010-02-23 Moved from dbcsr_operations - 2011-11 Moved parameter-stack processing routines to dbcsr_mm_methods. - 2013-01 reorganized code (Ole Schuett)

dbcsr_mm_common dbcsr_mm_common.F

Common variables and routines for the dbcsr matrix-matrix multiplication algorithms. Modification history: - 2016-08 Code organization (Alfio Lazzaro).

dbcsr_mm_csr dbcsr_mm_csr.F

Third layer of the dbcsr matrix-matrix multiplication. It collects the full matrix blocks, which need to be multiplied, and stores their parameters in various stacks. After a certain amount of parameters is collected it dispatches the filled stacks to either the CPU or the accelerator device. Modification history: - 2010-02-23 Moved from dbcsr_operations - 2011-11 Moved parameter-stack processing routines to dbcsr_mm_methods. - 2013-01 extensive refactoring (Ole Schuett)

dbcsr_mm_dist_operations dbcsr_mm_dist_operations.F

DBCSR operations on distributions related to matrix multiplication

dbcsr_mm_hostdrv dbcsr_mm_hostdrv.F

Stacks of small matrix multiplications

dbcsr_mm_multrec dbcsr_mm_multrec.F

Second layer of the dbcsr matrix-matrix multiplication. It divides the multiplication in a cache-oblivious manner. Modification history: - 2010-02-23 Moved from dbcsr_operations - 2011-11 Moved parameter-stack processing routines to dbcsr_mm_methods. - 2013-01 extensive refactoring (Ole Schuett)

dbcsr_mm_sched dbcsr_mm_sched.F

Fourth layer of the dbcsr matrix-matrix multiplication. It hides the differences between performing calculations on the accelerator device or on the CPU. Modification history: - 2010-02-23 Moved from dbcsr_operations - 2011-11 Moved parameter-stack processing routines to dbcsr_mm_methods. - 2013-01 extensive refactoring (Ole Schuett)

dbcsr_mm_types dbcsr_mm_types.F

Datatypes used by the dbcsr matrix-matrix multiplication machinery. Modification history: - 2013-01 reorganized code (Ole Schuett)

dbcsr_mp_methods dbcsr_mp_methods.F
dbcsr_mp_operations dbcsr_mp_operations.F

Wrappers to message passing calls.

dbcsr_mpiwrap dbcsr_mpiwrap.F

Interface to the message passing library MPI

dbcsr_multiply_api dbcsr_multiply_api.F
dbcsr_operations dbcsr_operations.F

Higher-level operations on DBCSR matrices.

dbcsr_print_messages dbcsr_print_messages.F

Perform an abnormal program termination.

Read more…
dbcsr_ptr_util dbcsr_ptr_util.F

DBCSR pointer and unmanaged array utilities

dbcsr_string_utilities dbcsr_string_utilities.F

Utilities for string manipulations

dbcsr_tas_base dbcsr_tas_base.F

Tall-and-skinny matrices: base routines similar to DBCSR API, mostly wrappers around existing DBCSR routines.

Read more…
dbcsr_tas_global dbcsr_tas_global.F

Global data (distribution and block sizes) for tall-and-skinny matrices For very sparse matrices with one very large dimension, storing array data of the same size as the matrix dimensions may require too much memory and we need to compute them on the fly for a given row or column. Hence global array data such as distribution and block sizes are specified as function objects, leaving up to the caller how to efficiently store global data.

dbcsr_tas_io dbcsr_tas_io.F

tall-and-skinny matrices: Input / Output

dbcsr_tas_mm dbcsr_tas_mm.F

Matrix multiplication for tall-and-skinny matrices. This uses the k-split (non-recursive) CARMA algorithm that is communication-optimal as long as the two smaller dimensions have the same size. Submatrices are obtained by splitting a dimension of the process grid. Multiplication of submatrices uses DBCSR Cannon algorithm. Due to unknown sparsity pattern of result matrix, parameters (group sizes and process grid dimensions) can not be derived from matrix dimensions and need to be set manually.

dbcsr_tas_reshape_ops dbcsr_tas_reshape_ops.F

communication routines to reshape / replicate / merge tall-and-skinny matrices.

dbcsr_tas_split dbcsr_tas_split.F

methods to split tall-and-skinny matrices along longest dimension. Basically, we are splitting process grid and each subgrid holds its own DBCSR matrix.

dbcsr_tas_test dbcsr_tas_test.F

testing infrastructure for tall-and-skinny matrices

dbcsr_tas_types dbcsr_tas_types.F

DBCSR tall-and-skinny base types. Mostly wrappers around existing DBCSR routines.

dbcsr_tas_util dbcsr_tas_util.F

often used utilities for tall-and-skinny matrices

dbcsr_tensor dbcsr_tensor.F

DBCSR tensor framework for block-sparse tensor contraction. Representation of n-rank tensors as DBCSR tall-and-skinny matrices. Support for arbitrary redistribution between different representations. Support for arbitrary tensor contractions \todo implement checks and error messages

dbcsr_tensor_api dbcsr_tensor_api.F

This is the start of a dbcsr_tensor_api, all publically needed functions are exported here. The others remain private to the library. Currently, this is the CP2K used set. Ultimately, a reduced subset and well defined api will remain, possibly grouped in to standard and expert api. Currently, this is work in progress.

dbcsr_tensor_api_c dbcsr_tensor_api_c.F
dbcsr_tensor_block dbcsr_tensor_block.F

Methods to operate on n-dimensional tensor blocks.

dbcsr_tensor_index dbcsr_tensor_index.F

tensor index and mapping to DBCSR index

dbcsr_tensor_io dbcsr_tensor_io.F

DBCSR tensor Input / Output

dbcsr_tensor_reshape dbcsr_tensor_reshape.F

Routines to reshape / redistribute tensors

dbcsr_tensor_split dbcsr_tensor_split.F

Routines to split blocks and to convert between tensors with different block sizes.

dbcsr_tensor_test dbcsr_tensor_test.F

General methods for testing DBCSR tensors.

dbcsr_tensor_types dbcsr_tensor_types.F

DBCSR tensor framework for block-sparse tensor contraction: Types and create/destroy routines.

dbcsr_test_methods dbcsr_test_methods.F

Tests for CP2K DBCSR operations

dbcsr_test_scale_by_vector dbcsr_test_scale_by_vector.F

Tests for DBCSR scale_by_vector

dbcsr_tests dbcsr_tests.F

Tests for CP2K DBCSR operations

dbcsr_timings dbcsr_timings.F

Timing routines for accounting

dbcsr_timings_base_type dbcsr_timings_base_type.F

Types used by timings.F and timings_report.F The types in this module are used within dict or list, which are in turn used in timer_env_type from timings_type.F Due to the fortran restriction on circular module-dependencies these "inner-types" had to go into a separate module.

dbcsr_timings_report dbcsr_timings_report.F

Timing routines for accounting

dbcsr_timings_types dbcsr_timings_types.F

Types used by timings.F and timings_report.F Due to the fortran restriction on circular module-dependencies the types, which are used through dict or list had to go into the separate module timings_base_type.F

dbcsr_toollib dbcsr_toollib.F

Tools usually found in a standard library.

dbcsr_transformations dbcsr_transformations.F

DBCSR transformations

dbcsr_types dbcsr_types.F

DBCSR data types

dbcsr_work_operations dbcsr_work_operations.F

DBCSR work matrix utilities