DLA-Future is a distributed linear algebra library implemented using C++ std::execution
P2300 which provides:
- an asynchronous C++ interface,
- a synchronous C interface,
- a synchronous ScaLAPACK-like C interface (ScaLAPACK drop-in with a subset of ScaLAPACK arguments. E.g. workspace arguments are not present),
- a synchronous ScaLAPACK-like Fortran interface (See DLA-Future-Fortran).
DLA-Future runs on x86 and ARM CPUs as well as NVIDIA and AMD GPUs.
Currently DLA-Future provides the following algorithms which are available in the following interfaces:
ScaLAPACK Name | Algorithm | C++ API | C API | Scalapack C API |
---|---|---|---|---|
P[S,D,C,Z]TRMM |
Triangular Matrix Multiplication | ✔️ | ❌ | ❌ |
P[C,Z]HEMM , P[S,D]SYMM |
Hermitian Matrix Multiplication | ✔️ | ❌ | ❌ |
P[S,D,C,Z]TRSM |
Triangular Solver | ✔️ | ❌ | ❌ |
P[S,D,C,Z]POTRF |
Cholesky Decomposition | ✔️ | ✔️ | ✔️ |
P[C,Z]HEEV* , P[S,D]SYEV* |
Symmetric / Hermitian eigenvalue solver | ✔️ | ✔️ | ✔️ |
P[C,Z]HEGV* , P[S,D]SYGV* |
Generalized Symmetric / Hermitian eigenvalue solver | ✔️ | ✔️ | ✔️ |
Notes:
- The C++ interface provides a non distributed interface as well.
See BUILD.md.
Using DLAF in a CMake project is extremely easy!
In the following, the variable DLAF_INSTALL_PREFIX
is set to where DLAF is installed. In case you used spack for installing DLAF, you can easily set it with:
export DLAF_INSTALL_PREFIX=`spack location -i dla-future`
Then, you can configure your project with one of the following:
# By appending the value to the CMAKE_INSTALL_PREFIX
cmake -DCMAKE_INSTALL_PREFIX=${DLAF_INSTALL_PREFIX} ..
# ... or by setting DLAF_DIR
cmake -DDLAF_DIR="$DLAF_INSTALL_PREFIX/lib/cmake" ..
Then, it is just as simple as adding these directives in your CMakeLists.txt
:
find_package(DLAF)
# ... and then for your executable/library target
target_link_libraries(<your_target> PRIVATE DLAF::DLAF)
See DOCUMENTATION.md for the documentation of older versions, or for the instructions to build it.
If you are using DLA-Future, please cite the following paper in addition to this repository:
@InProceedings{10.1007/978-3-031-61763-8_13,
author="Solc{\`a}, Raffaele
and Simberg, Mikael
and Meli, Rocco
and Invernizzi, Alberto
and Reverdell, Auriane
and Biddiscombe, John",
editor="Diehl, Patrick
and Schuchart, Joseph
and Valero-Lara, Pedro
and Bosilca, George",
title="DLA-Future: A Task-Based Linear Algebra Library Which Provides a GPU-Enabled Distributed Eigensolver",
booktitle="Asynchronous Many-Task Systems and Applications",
year="2024",
publisher="Springer Nature Switzerland",
address="Cham",
pages="135--141",
isbn="978-3-031-61763-8"
}
The development of DLAF library would not be possible without support of the following organizations (in alphabetic order):
CINECA: Cineca Consorzio Interuniversitario | |
CSCS: Swiss National Supercomputing Centre | |
ETH Zurich: Swiss Federal Institute of Technology Zurich | |
PASC: Platform for Advanced Scientific Computing | |
PRACE: Partnership for Advanced Computing in Europe As part of IP6 WP8 |
|