DBCSR: Distributed Block Compressed Sparse Row matrix library
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github/ISSUE_TEMPLATE Add GitHub bug report template Nov 8, 2018
cmake cmake: add more recent FindPkgConfig for IMPORTED_TARGET GLOBAL Nov 1, 2018
examples Fixed some typos in code comments. Nov 21, 2018
src Sync after each cublas call, update #117 Dec 11, 2018
tests cmake: do not run libcusmm tests via MPI Dec 7, 2018
tools Rely on dbcsr_string_utilities/uppercase (#110) Dec 2, 2018
.codecov.yml codecov: initial commit to reduce noise Nov 20, 2018
.flake8 add pre-commit config with flake8 & yapf for Python Nov 7, 2018
.gitattributes gitattributes: ignore .github/ directory in export Nov 15, 2018
.gitignore gitignore: fix paths, use subdir gitignore Oct 19, 2018
.gitmodules Include new prettifier Nov 19, 2018
.pre-commit-config.yaml travis/pre-commit: add check-ast test for Python 2 and 3 Nov 19, 2018
.style.yapf add pre-commit config with flake8 & yapf for Python Nov 7, 2018
.travis.yml travis: set CHECKS=1 for builds with pure make Nov 19, 2018
AUTHORS Update Authors file Aug 28, 2018
CMakeLists.txt cmake: make sure -std=c++11 is set for cxx/cuda Dec 7, 2018
CONTRIBUTING.md Fixed typos (#103) Nov 20, 2018
LICENSE LICENSE: use GPLv2 as specified in COPYRIGHT Jun 18, 2018
Makefile Fix mod files related dependencies such that .mod files are not Dec 2, 2018
Makefile.inc Drop K20 GPU, not supported Nov 19, 2018
README.md Add a small contributing section Nov 19, 2018
VERSION Bump version to v1.0.0-rc.3 Dec 11, 2018

README.md

DBCSR: Distributed Block Compressed Sparse Row matrix library

Build Status codecov

DBCSR is a library designed to efficiently perform sparse matrix matrix multiplication, among other operations. It is MPI and OpenMP parallel and can exploit GPUs via CUDA.

DBCSR logo

Prerequisites

You absolutely need:

  • GNU make
  • a Fortran compiler which supports at least Fortran 2003 (respectively 2008+TS when using the C-bindings)
  • a LAPACK implementation (reference, OpenBLAS-bundled and MKL have been tested)
  • a BLAS implementation (reference, OpenBLAS-bundled and MKL have been tested)
  • a Python version installed (2.7 or 3.6+ have been tested)

Optionally:

  • libxsmm (1.8.2+ with make-only, 1.10+ with cmake) for Small Matrix Multiplication acceleration
  • CMake (3.10+)

To build with CUDA support you further need:

  • CUDA Toolkit
  • a C++ compiler which supports at least C++11 standard

We test against GNU and Intel compilers on Linux systems.

Getting started

Download either a release tarball or clone the latest version from Git using:

git clone --recursive https://github.com/cp2k/dbcsr.git

Run

make help

to list all possible targets.

Update the provided Makefile.inc to fit your needs (read the documentation inside the file for further explanations) and then run

make <target>

Some examples on how to use the library (which is the only current documentation) are available under the examples directory (see readme).

C/C++ Interface

You can compile with

make CINT=1

to generate the C interface. Make sure your Fortran compiler supports F2008 standard (including the TS) by updating the flag in the Makefile.inc.

CMake

Building with CMake is also supported:

mkdir build
cd build
cmake ..

The configuration flags are (default first):

-DUSE_MPI=<ON|OFF>
-DUSE_OPENMP=<ON|OFF>
-DUSE_SMM=<blas|libxsmm>
-DUSE_CUDA=<OFF|ON>
-DWITH_C_API=<ON|OFF>
-DWITH_EXAMPLES=<ON|OFF>
-DWITH_GPU=<P100|K20X|K40|K80>
-DTEST_MPI_RANKS=<auto,N>

Contributing to DBCSR

Your contribution to the project is welcome! Please see Contributing.md and this wiki page. For any help, please notify the other developers.