GithubHelp home page GithubHelp logo

kabicm / dla-interface Goto Github PK

View Code? Open in Web Editor NEW

This project forked from eth-cscs/dla-interface

0.0 2.0 0.0 587 KB

Interface for Distributed Linear Algebra

License: BSD 3-Clause "New" or "Revised" License

CMake 1.30% C++ 96.29% C 0.73% Fortran 1.38% Shell 0.30%

dla-interface's Introduction

DLA interface

This is the repository for the DLA (Distributed Linear Algebra) interface code.

Motivation

The use of the LAPACK and ScaLAPACK libraries for numerical linear algebra is ubiquitous in high-performance computing applications, and many vendors and software providers use it as the basis of their own high-performance math libraries. However, there currently exists no distributed GPU-enabled library. Other packages for linear algebra with GPU support (or without GPU support but with better performances) exist, but they have different interfaces, therefore major changes in the application code are needed to adopt them.

Goals

We intend to develop a distributed linear algebra (DLA) interface with the following features:

  • The DLA package for each call can be decided at runtime.
  • An interface that works with ScaLAPACK matrices.
  • Performs matrix layout conversion if needed.

Potential Benefit

Each Application which uses ScaLAPACK will be able to use the DLA interface with minor changes in the code, and can benefit from the use of the best performing DLA package to increase the performance of the application.

DLA Interface

The DLA interface features:

  • Communicator utilities
  • Matrix class
  • DLA routines C++ wrappers (Partially implemented)
  • DLA routines Fortran wrappers (Not yet supported)

List of supported DLA packages

The DLA library supported are:

  • ScaLAPACK (MKL, Libsci, Netlib, ...)
  • ELPA (Not yet supported)
  • D-Plasma (ParSEC) (partially supported, see limitations)
  • Chameleon (StarPU) (Not yet supported)

For more information of which routine of each package is supported see the list of supported routines

List of supported routines

  • Matrix-matrix multiplication (p*gemm) (ScaLAPACK, DPlasma)
  • Cholesky factorization (p*potrf) (ScaLAPACK, DPlasma)
  • LU factorization (p*getrf) (ScaLAPACK, DPlasma)

List of routines with planned support

The routines which will be available are (including the ScaLAPACK corresponding name):

  • Matrix-matrix multiplication (p*gemm)
  • Matrix-vector multiplication (p*gemv)
  • Cholesky factorization (p*potrf)
  • LU factorization (p*getrf)
  • Upper/lower triangular matrix inversion (p*trtri)
  • Matrix inversion (LU) (p*getri)
  • Eigenvalue solver (p*{sy,he}ev{d,x}, p*geev)
  • Solution of linear equations system (p*gesv)

Documentation

Known current limitations

  • MKL:
    • The pivot array returned by MKL distributed Cholesky factorization may be wrong for submatrices (when ia or ja are not 0). [Fixed in MKL-2018u2.]
    • MKL distributed Matrix multiplication may be wrong for submatrices ("NN" case (both A and B matrices not transposed)). [Fixed in MKL-2018u2.]
  • Parsec:
    • Thread binding is wrong when multiple rank per node are used. (Parsec Issue #152)
    • Change of the Parsec MPI Communicator sometimes hangs (Parsec Issue #135), therefore only row ordered 2D communicator grids can be used.
  • DPLASMA:
    • Matrix multiplication requires consistent block sizes (I.e. A_mb == C_mb, B_nb == C_nb, A_nb == B_mb).
    • LU decomposition requires a (1xq) communicator grid.

dla-interface's People

Contributors

msimberg avatar rasolca avatar

Watchers

 avatar  avatar

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.