Code Monkey home page Code Monkey logo

dla-future's Introduction

zenodo pipeline status codecov

Distributed Linear Algebra from the Future

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.

Getting started with DLAF

Build

See BUILD.md.

Link your program/library with DLAF

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)

Documentation

See DOCUMENTATION.md for the documentation of older versions, or for the instructions to build it.

Citing

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"
}

Acknowledgements

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

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.