All Projects → hpddm → Hpddm

hpddm / Hpddm

Licence: other
A framework for high-performance domain decomposition methods.

Programming Languages

python
139335 projects - #7 most used programming language
c
50402 projects - #5 most used programming language
fortran
972 projects

Projects that are alternatives of or similar to Hpddm

Fmatvec
A fast vector/matrix library
Stars: ✭ 5 (-91.67%)
Mutual labels:  linear-algebra
Notecalc3
NoteCalc is a handy calculator trying to bring the advantages of Soulver to the web.
Stars: ✭ 879 (+1365%)
Mutual labels:  linear-algebra
Quant Finance Resources
Courses, Articles and many more which can help beginners or professionals.
Stars: ✭ 36 (-40%)
Mutual labels:  linear-algebra
Liblaml
A stand-alone pure C++ library for linear algebra and machine learning
Stars: ✭ 7 (-88.33%)
Mutual labels:  linear-algebra
Taco
The Tensor Algebra Compiler (taco) computes sparse tensor expressions on CPUs and GPUs
Stars: ✭ 846 (+1310%)
Mutual labels:  linear-algebra
100 Days Of Ml Code
100 Days of ML Coding
Stars: ✭ 33,641 (+55968.33%)
Mutual labels:  linear-algebra
Cgmath
A linear algebra and mathematics library for computer graphics.
Stars: ✭ 773 (+1188.33%)
Mutual labels:  linear-algebra
Math object detection
An image recognition/object detection model that detects handwritten digits and simple math operators. The output of the predicted objects (numbers & math operators) is then evaluated and solved.
Stars: ✭ 52 (-13.33%)
Mutual labels:  linear-algebra
Blis
BLAS-like Library Instantiation Software Framework
Stars: ✭ 859 (+1331.67%)
Mutual labels:  linear-algebra
Easytensor
Many-dimensional type-safe numeric ops
Stars: ✭ 35 (-41.67%)
Mutual labels:  linear-algebra
Suitesparse
SuiteSparse: a suite of sparse matrix packages by T. A. Davis et al. (This repository contains copies of the official versions.)
Stars: ✭ 19 (-68.33%)
Mutual labels:  linear-algebra
Matrix
Matrix laboratory
Stars: ✭ 23 (-61.67%)
Mutual labels:  linear-algebra
Nasoq
NASOQ:Numerically Accurate Sparsity Oriented QP Solver
Stars: ✭ 30 (-50%)
Mutual labels:  linear-algebra
Mumps.jl
A Julia Interface to MUMPS
Stars: ✭ 6 (-90%)
Mutual labels:  linear-algebra
Numerical Linear Algebra
Free online textbook of Jupyter notebooks for fast.ai Computational Linear Algebra course
Stars: ✭ 8,263 (+13671.67%)
Mutual labels:  linear-algebra
Arraymancer
A fast, ergonomic and portable tensor library in Nim with a deep learning focus for CPU, GPU and embedded devices via OpenMP, Cuda and OpenCL backends
Stars: ✭ 793 (+1221.67%)
Mutual labels:  linear-algebra
Okalgo
Idiomatic Kotlin extensions for ojAlgo
Stars: ✭ 20 (-66.67%)
Mutual labels:  linear-algebra
Strumpack
Structured Matrix Package (LBNL)
Stars: ✭ 57 (-5%)
Mutual labels:  linear-algebra
Numeric
N-dimensional matrix class for Rust
Stars: ✭ 51 (-15%)
Mutual labels:  linear-algebra
Constant Vigilance
Learn this if you want to be a software engineer. Constant vigilance means being continually aware of areas that need improvement. For me, I am constantly searching for valuable resources to ensure I am able to solve any problem that comes my way.
Stars: ✭ 30 (-50%)
Mutual labels:  linear-algebra

HPDDM — high-performance unified framework for domain decomposition methods build codecov

What is HPDDM?

HPDDM is an efficient implementation of various domain decomposition methods (DDM) such as one- and two-level Restricted Additive Schwarz (RAS) methods, the Finite Element Tearing and Interconnecting (FETI) method, and the Balancing Domain Decomposition (BDD) method. These methods can be enhanced with deflation vectors computed automatically by the framework using:

  • Generalized Eigenvalue problems on the Overlap (GenEO), an approach first introduced in a paper by Spillane et al., or
  • local Dirichlet-to-Neumann operators, an approach first introduced in a paper by Nataf et al. and revisited by Conen et al.

This code has been proven to be efficient for solving various elliptic problems such as scalar diffusion equations, the system of linear elasticity, but also frequency domain problems like the Helmholtz equation. A comparison with modern multigrid methods can be found in the thesis of Jolivet. The preconditioners may be used with a variety of Krylov subspace methods (which all support right, left, and variable preconditioning).

How to use HPDDM?

HPDDM is a library written in C++11 with MPI and OpenMP for parallelism. It is available out of the box in the following software:

  • PETSc, with the option --download-hpddm
  • SLEPc, with the option --download-hpddm
  • FreeFEM, with the option --enable-download_hpddm
  • Feel++, with the appropriate CMake include flag
  • htool, with the appropriate CMake include flag

While its interface relies on plain old data objects, it requires a modern C++ compiler: g++ 4.7.2 and above, clang++ 3.3 and above, icpc 15.0.0.090 and above¹, or pgc++ 15.1 and above¹. HPDDM has to be linked against BLAS and LAPACK (as found in OpenBLAS, in the Accelerate framework on macOS, in IBM ESSL, or in Intel MKL) as well as a direct solver like MUMPS, SuiteSparse, MKL PARDISO, or PaStiX. Additionally, an eigenvalue solver is recommended. There are existing interfaces to ARPACK and SLEPc. Other (eigen)solvers can be easily added using the existing interfaces.
For building robust two-level methods, an interface with a discretization kernel like PETSc DMPlex, FreeFEM or Feel++ is also needed. It can then be used to provide, for example, elementary matrices, that the GenEO approach requires. As such, preconditioners assembled by HPDDM are not algebraic, unless only looking at one-level methods. Note that for substructuring methods, this is more of a limitation of the mathematical approach than of HPDDM itself.
The list of available options can be found in this cheat sheet. There is also a tutorial explaining how HPDDM is integrated in FreeFEM.

¹The latest versions of icpc and (this has been fixed since version 16.0.2.181) pgc++ (since version 18.7) are not able to compile C++11 properly, if you want to use these compilers, please apply the following patch to the headers of HPDDM sed -i\ '' 's/type\* = nullptr/type* = (void*)0/g; s/static constexpr const char/const char/g' include/*.hpp examples/*.cpp.

TL;DR

Create a ./Makefile.inc by copying one from the folder ./Make.inc and adapt it to your platform. Type make test to run C++, C, Python, and Fortran examples (just type make test_language with language = [cpp|c|python|fortran] if you want to try only one set of examples).

May HPDDM be embedded inside C, Python, or Fortran codes?

Yes, as long as you have a modern C++ compiler, cf. the previous paragraph. With Python, NumPy and mpi4py must also be available.

Who is behind HPDDM?

This project was initiated by Pierre Jolivet and Frédéric Nataf. Stefano Zampini later played an integral role in the development of the PETSc interface.

How to cite HPDDM?

If you use this software, please cite the appropriate references from the list below, thank you.

Acknowledgments

Centre National de la Recherche Scientifique, France
Institut de Recherche en Informatique de Toulouse, France
Eidgenössische Technische Hochschule Zürich, Switzerland
Université Joseph Fourier, Grenoble, France
Université Pierre et Marie Curie, Paris, France
Inria Paris, France
Agence Nationale de la Recherche, France
Partnership for Advanced Computing in Europe
Grand Equipement National de Calcul Intensif, France
Fondation Sciences Mathématiques de Paris, France

Collaborators/contributors

Lea Conen
Victorita Dolean
Ryadh Haferssas
Frédéric Hecht
Pierre Marchand
Christophe Prud'homme
Nicole Spillane
Pierre-Henri Tournier

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].