Modules

ModuleSource FileDescription
dbcsr_acc_devicedbcsr_acc_device.F
dbcsr_acc_devmemdbcsr_acc_devmem.F

Accelerator support

dbcsr_acc_eventdbcsr_acc_event.F

Accelerator support

dbcsr_acc_hostmemdbcsr_acc_hostmem.F

Accelerator support

dbcsr_acc_initdbcsr_acc_init.F

Accelerator support

dbcsr_acc_operationsdbcsr_acc_operations.F

Accelerator support for DBCSR

dbcsr_acc_streamdbcsr_acc_stream.F

Accelerator support

dbcsr_acc_timingsdbcsr_acc_timings.F

Accelerator support

dbcsr_allocate_wrapdbcsr_allocate_wrap.F

Wrapper for allocating, copying and reshaping arrays.

Read more…
dbcsr_apidbcsr_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_cdbcsr_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_methodsdbcsr_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_sortdbcsr_array_sort.F

Routine for sorting an array

Read more…
dbcsr_array_typesdbcsr_array_types.F

Array objects with reference counting.

dbcsr_base_hooksdbcsr_base_hooks.F

Central dispatch for basic hooks

dbcsr_blas_operationsdbcsr_blas_operations.F

Wrappers to BLAS calls.

dbcsr_block_accessdbcsr_block_access.F

DBCSR block access

dbcsr_block_operationsdbcsr_block_operations.F

Routines for basic block transformations.

dbcsr_btreedbcsr_btree.F

B-tree

dbcsr_configdbcsr_config.F

Configuration options for DBCSR

dbcsr_csr_conversionsdbcsr_csr_conversions.F

DBCSR to CSR matrix format conversion

dbcsr_cuda_profilingdbcsr_cuda_profiling.F

routines for profiling cuda

dbcsr_data_methodsdbcsr_data_methods.F

DBCSR data methods

dbcsr_data_methods_lowdbcsr_data_methods_low.F

DBCSR data methods

dbcsr_data_operationsdbcsr_data_operations.F

DBCSR data operations

dbcsr_data_typesdbcsr_data_types.F

Types related to DBCSR data area

dbcsr_dictdbcsr_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_methodsdbcsr_dist_methods.F

Routines related to DBCSR distributions

dbcsr_dist_operationsdbcsr_dist_operations.F

DBCSR operations on distributions

dbcsr_dist_utildbcsr_dist_util.F

DBCSR sparse matrix utility routines

dbcsr_error_handlingdbcsr_error_handling.F

Module that contains the routines for error handling

dbcsr_filesdbcsr_files.F

Utility routines to open and close files.

dbcsr_hip_profilingdbcsr_hip_profiling.F
dbcsr_index_operationsdbcsr_index_operations.F

Operations on the DBCSR index

dbcsr_iodbcsr_io.F

DBCSR input/output

dbcsr_iter_typesdbcsr_iter_types.F

Collection of routines to handle the iteration info

dbcsr_iterator_operationsdbcsr_iterator_operations.F

DBCSR iterator operations

dbcsr_kindsdbcsr_kinds.F

Defines the basic variable types

Read more…
dbcsr_libdbcsr_lib.F

Routines that affect the DBCSR library as a whole

dbcsr_listdbcsr_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_callstackentrydbcsr_list_callstackentry.F
dbcsr_list_routinereportdbcsr_list_routinereport.F
dbcsr_list_routinestatdbcsr_list_routinestat.F
dbcsr_list_timerenvdbcsr_list_timerenv.F
dbcsr_log_handlingdbcsr_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_machinedbcsr_machine.F
dbcsr_machine_internaldbcsr_machine_internal.F

Implementation of machine interface based on Fortran 2003 and POSIX

dbcsr_mem_methodsdbcsr_mem_methods.F

DBCSR Memory Pool to avoid slow allocations of accelerator memory

dbcsr_methodsdbcsr_methods.F

Base methods on DBCSR data structures

dbcsr_min_heapdbcsr_min_heap.F
dbcsr_mmdbcsr_mm.F

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

dbcsr_mm_3ddbcsr_mm_3d.F

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

dbcsr_mm_accdrvdbcsr_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_cannondbcsr_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_commondbcsr_mm_common.F

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

dbcsr_mm_csrdbcsr_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_operationsdbcsr_mm_dist_operations.F

DBCSR operations on distributions related to matrix multiplication

dbcsr_mm_hostdrvdbcsr_mm_hostdrv.F

Stacks of small matrix multiplications

dbcsr_mm_multrecdbcsr_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_scheddbcsr_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_typesdbcsr_mm_types.F

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

dbcsr_mp_methodsdbcsr_mp_methods.F
dbcsr_mp_operationsdbcsr_mp_operations.F

Wrappers to message passing calls.

dbcsr_mpiwrapdbcsr_mpiwrap.F

Interface to the message passing library MPI

dbcsr_multiply_apidbcsr_multiply_api.F
dbcsr_operationsdbcsr_operations.F

Higher-level operations on DBCSR matrices.

dbcsr_print_messagesdbcsr_print_messages.F

Perform an abnormal program termination.

Read more…
dbcsr_ptr_utildbcsr_ptr_util.F

DBCSR pointer and unmanaged array utilities

dbcsr_string_utilitiesdbcsr_string_utilities.F

Utilities for string manipulations

dbcsr_tas_basedbcsr_tas_base.F

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

Read more…
dbcsr_tas_globaldbcsr_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_iodbcsr_tas_io.F

tall-and-skinny matrices: Input / Output

dbcsr_tas_mmdbcsr_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_opsdbcsr_tas_reshape_ops.F

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

dbcsr_tas_splitdbcsr_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_testdbcsr_tas_test.F

testing infrastructure for tall-and-skinny matrices

dbcsr_tas_typesdbcsr_tas_types.F

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

dbcsr_tas_utildbcsr_tas_util.F

often used utilities for tall-and-skinny matrices

dbcsr_tensordbcsr_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_apidbcsr_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_cdbcsr_tensor_api_c.F
dbcsr_tensor_blockdbcsr_tensor_block.F

Methods to operate on n-dimensional tensor blocks.

dbcsr_tensor_indexdbcsr_tensor_index.F

tensor index and mapping to DBCSR index

dbcsr_tensor_iodbcsr_tensor_io.F

DBCSR tensor Input / Output

dbcsr_tensor_reshapedbcsr_tensor_reshape.F

Routines to reshape / redistribute tensors

dbcsr_tensor_splitdbcsr_tensor_split.F

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

dbcsr_tensor_testdbcsr_tensor_test.F

General methods for testing DBCSR tensors.

dbcsr_tensor_typesdbcsr_tensor_types.F

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

dbcsr_test_methodsdbcsr_test_methods.F

Tests for CP2K DBCSR operations

dbcsr_test_scale_by_vectordbcsr_test_scale_by_vector.F

Tests for DBCSR scale_by_vector

dbcsr_testsdbcsr_tests.F

Tests for CP2K DBCSR operations

dbcsr_timingsdbcsr_timings.F

Timing routines for accounting

dbcsr_timings_base_typedbcsr_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_reportdbcsr_timings_report.F

Timing routines for accounting

dbcsr_timings_typesdbcsr_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_toollibdbcsr_toollib.F

Tools usually found in a standard library.

dbcsr_transformationsdbcsr_transformations.F

DBCSR transformations

dbcsr_typesdbcsr_types.F

DBCSR data types

dbcsr_work_operationsdbcsr_work_operations.F

DBCSR work matrix utilities