Skip to content

vincent-maillou/serinv

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SerinV: Selected Inversion, factorization and solver for structured sparse matrices

codecov Code style: black

SerinV bundle implementations of several factorization, selected-inversion and solver for severals types of structured sparse matrices. It implements sequential and distributed algorithm and support GPUs backends.

Routine Naming Conventions

We have adopted a LAPACK-like naming convention for the routines. The naming convention is as follows:

Computation scheme:

D_: Distributed algorithm using a nested dissection scheme

Types of matrices:

PO: Symmetric or Hermitian positive definite matrix
DD: General, square, diagonally dominante matrix

Sparsity pattern:

BT: Block-Tridiagonal
BTA: Block-Tridiagonal with Arrowhead, by convention the arrowhead is pointing down.
BB: Block-Banded
BBA: Block-Banded with Arrowhead, by convention the arrowhead is pointing down.

Operations performed:

F: Factorization
S: Solve a linear system given a decomposition of the system matrix and a right-hand side.
SI: Compute a Selected Inversion given a decomposition of the system matrix.
SSI: Compute a Schur-complement based Selected Inversion. Do not explicit the factorization but perform a Schur-complement and a selected inversion.

Others:

_RSS: reduced-system solve. Solve a reduced system constructed from the distributed factorization of a matrix.

Examples:

  • pobtaf: Perform the factorization of a block-tridiagonal with arrowhead, symmetric positive definite, matrix.
  • d_pobtasi: Compute the selected inversion of a block-tridiagonal with arrowhead, matrix given its Cholesky factorization, using a distributed algorithm.

How to install

First, you'll need to instal the project in your current environment. You can do this by running the following commands:

# Recommended: Create a new conda environment with python version above 3.9
conda create --name serinv_env python=3.11

# Activate the created environment
conda activate serinv_env

# Move to the root of the repository
cd /path/to/serinv/

# Install the package in editable mode
pip install -e .

To use the distributed version of the algorithms, you'll need to install mpi4py and have a working MPI implementation. You can find all the relevant information on the mpi4py documentation.

To use the GPU version of the algorithms, you'll need to install CuPy. You can find all the relevant information on the CuPy documentation.

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages