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.
We have adopted a LAPACK-like naming convention for the routines. The naming convention is as follows:
D_: Distributed algorithm using a nested dissection scheme
PO: Symmetric or Hermitian positive definite matrix
DD: General, square, diagonally dominante matrix
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.
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.
_RSS: reduced-system solve. Solve a reduced system constructed from the distributed factorization of a matrix.
- 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.
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.