Giter Site home page Giter Site logo

bssrdf / elemental Goto Github PK

View Code? Open in Web Editor NEW

This project forked from elemental/elemental

0.0 3.0 0.0 46.27 MB

Distributed-memory dense and sparse-direct linear algebra and optimization

Home Page: http://libelemental.org

License: Other

CMake 2.22% TeX 0.26% C++ 82.96% C 3.79% Objective-C 1.56% MATLAB 0.14% Python 9.04% Makefile 0.01% Shell 0.01% Ruby 0.01%

elemental's Introduction

Build Status

Elemental is a modern C++ library for distributed-memory dense and sparse-direct linear algebra and optimization. The library was initially released in Elemental: A new framework for distributed memory dense linear algebra and absorbed, then greatly expanded upon, the functionality from the sparse-direct solver Clique, which was originally released during a project on Parallel Sweeping Preconditioners.

Please visit the download page for details about recent and upcoming releases.

Documentation

The documentation for Elemental is built using Sphinx and the Read the Docs Theme

Unique features

Elemental supports a wide collection of sequential and distributed-memory functionality, including:

Convex optimization:

  • (Arbitrary-precision) dense and sparse Interior Point Methods for Linear, Quadratic, and Second-Order Cone Programs (Note: Scalability for sparse IPMs will be lacking until more general sparse matrix distributions are introduced into Elemental)
    • Basis Pursuit
    • Chebyshev Points
    • Dantzig selectors
    • LASSO / Basis Pursuit Denoising
    • Least Absolute Value regression
    • Non-negative Least Squares
    • Support Vector Machines
    • (1D) Total Variation
  • (Arbitrary-precision) Jordan algebras over products of Second-Order Cones
  • Various prototype dense Alternating Direction Method of Multipliers routines
    • Sparse inverse covariance selection
    • Robust Principal Component Analysis
  • Prototype alternating direction Non-negative Matrix Factorization

Linear algebra:

  • (Arbitrary-precision) dense and sparse-direct (generalized) Least Squares problems
    • Least Squares / Minimum Length
    • Tikhonov (and ridge) regression
    • Equality-constrained Least Squares
    • General (Gauss-Markov) Linear Models
  • High-performance pseudospectral computation and visualization
  • (Arbitrary-precision) blocked column-pivoted QR via Johnson-Lindenstrauss
  • (Arbitrary-precision) quadratic-time low-rank Cholesky and LU modifications
  • (Arbitrary-precision) Bunch-Kaufman and Bunch-Parlett for accurate symmetric factorization
  • (Arbitrary-precision) LU and Cholesky with full pivoting
  • (Arbitrary-precision) Column-pivoted QR and interpolative/skeleton decompositions
  • (Arbitrary-precision) Quadratically Weighted Dynamic Halley iteration for the polar decomposition
  • Many algorithms for Singular-Value soft-Thresholding (SVT)
  • (Arbitrary-precision) Tall-skinny QR decompositions
  • Hermitian matrix functions
  • Prototype Spectral Divide and Conquer Schur decomposition and Hermitian EVD
  • Sign-based Lyapunov/Ricatti/Sylvester solvers

The current development roadmap

Core data structures:

  • (1a) Eliminate DistMultiVec in favor of the newly extended DistMatrix
  • (1b) Extend DistSparseMatrix to support elementwise and blockwise 2D distributions
  • (1c) Extend the library to support (distributed) arbitrary-precision complex arithmetic on top of MPC

Linear algebra:

  • (2a) Distributed iterative refinement tailored to two right-hand sides [weakly depends on (1a)]
  • (2b) Extend black-box iterative refinement to DistMatrix
  • (2c) Incorporate iterative refinement into linear solvers via optional control structure [weakly depends upon (2b)]

Convex optimization:

  • (3a) Add support for homogeneous self-dual embeddings [weakly depends on (2a)]
  • (3b) Enhance sparse scalability via low edge-degree plus low-rank decompositions [depends on (1b); weakly depends on (1a)]
  • (3c) Distributed sparse semidefinite programs via chordal decompositions [weakly depends on (3b)]

Lattice reduction:

Alternatively, see the TODO list for a detailed, albeit somewhat outdated, list of planned additions.

License

The vast majority of Elemental is distributed under the terms of the New BSD License, with the exceptions of METIS, which is distributed under the (equally permissive) Apache License, Version 2.0, ParMETIS, which can only be used for research purposes (and can be easily disabled), and libquadmath, which is distributed under the terms of the GNU Lesser General Public License, version 2.1 or later.

Dependencies

Intranodal linear algebra

OpenBLAS is automatically downloaded and installed if no vendor/tuned BLAS/LAPACK is detected.

Intranodal graph partitioning

  • METIS
  • ParMETIS (Note: commercial users must disable this option during configuration)

If ParMETIS is not disabled and cannot be found (including access to internal APIs), then it is automatically downloaded and installed; otherwise, if METIS support is not detected, METIS is downloaded and installed.

Internodal linear algebra

If ScaLAPACK support is not explicitly disabled, then Elemental looks for a previous installation and, failing that, attempts to automatically download and install the library.

Internodal communication

Auxiliary libraries

Python interface

C++ visualization

  • Qt5 (optional for visualization from C++)

Build system

Third-party interfaces

In addition to the C++11, C, and Python interfaces included within the project, three external interfaces are currently being externally developed:

Related open-source projects

Distributed dense linear algebra:

Distributed sparse-direct linear algebra:

Distributed linear algebra Frameworks

Convex optimization

elemental's People

Contributors

poulson avatar yingzhouli avatar jiahao avatar mcg1969 avatar jeffhammond avatar jakebolewski avatar mcopik avatar rocanale avatar andreasnoack avatar justusc avatar ahmadia avatar jedbrown avatar stefanozampini avatar tkelman avatar rools32 avatar xantares avatar

Watchers

 avatar James Cloos 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.