pargemslr logo New ParGeMSLR New is a package of parallel multilevel preconditioners for solving distributed (nonsymmetric) sparse linear systems. Current release: Version 1.0.0 (June 2, 2021). `parGeMSLR' stands for Parallel Generalized Multilevel Schur complement Low-Rank preconditioning . The package is written in C++ (plus MPI and CUDA) and it offers a number of preconditioning methods for solving distributed linear systems by preconditioned Krylov subspace methods. The preconditioners implemented in parGeMSLR are purely algebraic in nature and are based on a multilevel reordering of the original set of equations/variables, that exploits a hierarchical ordering of the interface variables at each level. Several options for reordering are available. The Schur complements that appear as a result of the domain decomposition approach are not formed explicitly. Instead solutions of systems that involve them are carried out with the help of a hierarchical procedure which incoporates a low-rank correction.
This work was supported by NSF and involved a multi-year effort by: Tianshi Xu, Vassilis Kalantzis, Ruipeng Li, Yuanzhe Xi, Geoffrey Dillon, and Yousef Saad.

evsl logo EVSL a library of (sequential) eigensolvers based on spectrum slicing. Version 1.1.0 New release on Aug. 9, 2017
EVSL provides routines for computing eigenvalues located in a given interval, and their associated eigenvectors, of real symmetric matrices. It also provides tools for spectrum slicing, i.e., the technique of subdividing a given interval into p smaller subintervals and computing the eigenvalues in each subinterval independently. EVSL implements a polynomial filtered Lanczos algorithm (thick restart, no restart) a rational filtered Lanczos algorithm (thick restart, no restart), and a polynomial filtered subspace iteration.

itsol logo ITSOL a library of (sequential) iterative solvers. Version 2 released. [11/16/2010]
ITSOL can be viewed as an extension of the ITSOL module in the SPARSKIT package. It is written in C and aims at providing additional preconditioners for solving general sparse linear systems of equations. Preconditioners so far in this package include (1) ILUK (ILU preconditioner with level of fill) (2) ILUT (ILU preconditioner with threshold) (3) ILUC (Crout version of ILUT) (4) VBILUK (variable block preconditioner with level of fill - with automatic block detection) (5) VBILUT (variable block preconditioner with threshold - with automatic block detection) (6) ARMS (Algebraic Recursive Multilevel Solvers -- includes actually several methods - In particular the standard ARMS and the ddPQ version which uses nonsymmetric permutations).
ZITSOL a complex version of some of the methods in ITSOL is also available.

parms logo pARMS Version 3.2 released. [11/16/2010]
A portable library of distributed-memory sparse iterative solvers. Version 3.2 posted.
Note: PSPARSLIB [a FORTRAN77 portable library of distributed-memory sparse iterative solvers released first circa 1995] is no longer posted. pARMS replaces PSPARSLIB. The older version of pARMS [pARMS_2.2] will remain posted but will have no support.
This work was supported by the Department Of Energy.

FILTLAN Version 1.0a released. [08/22/2011]
A Filtered Lanczos package for solving interior and extreme symmetric eigenproblems. Version 1.0a posted. Suppose you want to compute all the eigenvalues of a matrix A that are located in an interval which is a subset deep inside the spectrum of A. The matrix A is symmetric, and may be issued from the discretization of a 3-D problem (e.g., a Poisson operator), so shift-and-invert may not be an option. In this situation a filtered Lanczos approach is ideal and tests reveal that this approach is very effective, especially when the number of eigenvalues-eigenvectors to be computed is very large.
This work was supported by the Department Of Energy.

CudaMem CUDA_ITSOL [05/13/2011] The CUDA Iterative Solver package. This is a package for performing various sparse matrix operations and, more importantly, for solving sparse linear systems of equations. It is written under CUDA. The package was developed by Ruipeng Li [PhD Student, Univ. of Minnesota].
See this technical report for details on the methods implemented and more.
This work was supported by the Department Of Energy.

miqr logo

MIQR This is a package - written in C - for solving least-squares systems by a preconditioned CGNR algorithm. The heart of the method is a Multilevel Incomplete QR (MIQR) preconditioning technique. The code was written by Na Li [PhD, 2005]. One can think of this code as an equivalent of ARMS for least-squares systems.

Matlab suite The matlab suite is a little collection of matlab functions which I have used in demos in various tutorials on iterative methods. They include standard preconditioners [e.g., ILUT], and ARMS and simple implementations of Krylov methods. The link above points to the *tar.gz file. The matlab demos will be updated at the occasion of tutorials I give. So far the contents are:
 armsC [arms preconditioner in matlab]  
 EIG [various functions for eigenvalue problems]
 GraphPart [simple implementation of Recursive Graph partitioning] 
 MATRICES [a few sample matrices from Tim Davis' site] 
 sparse [functions for illustrating sparsity]
 CRM_08_Tutor [demos given at the CRM tutorial] 
 gauss_sparse [sparse Gaussian elimination] 
 iters [basic iterations and accelerators] 
 precon [for illustrating precondioners] 
 systems [basics on linear systems, dense.] 

sparskit logo

SPARSKIT a basic tool-kit for sparse matrix computations. Sparskit is a general purpose FORTRAN-77 library for sparse matrix computations. It has been gathered over several years and includes some of the most useful tools for developing and implementing sparse matrix techniques, particularly for iterative solvers. If you need a simple routine for doing a sparse matrix operation (e.g., adding two sparse matrices, or reordering a sparse matrix) it is likely to be available in SPARSKIT. SPARSKIT also contains most of the iterative accelarators and a number of efficient preconditioners [However, it is recommended to use ITSOL for this purpose -- see above]

I L U P A C K ILUPACK is a package developed by Matthias Bollhoefer and his team in Berlin (Part of the work resulted from a joint collaboration). Current release=V2.1. ILUPACK provides several multilevel ILU preconditioners for general real and complex matrices as well as real and complex symmetric (Hermitian) positive definite systems.
ILUPACK exploits inverse-based ILUs which control the growth of the inverse triangular factors. It is an exhaustive package which incorporates the best methods in iterative solvers developed in recent years.

K N N -- KNN - (NEW) is a fast algorithm for computing K-nearest neighbors graphs. It is a multilevel algorithm which exploits a divide and conquer approach. Two methods are actually implemented. A key ingredient of these two methods is the Lanczos algorithm. The code is based on the paper Fast approximate knn graph construction for high dimensional data via recursive Lanczos bisection by J. Chen, H. R. Fang, and Y. Saad. J. Chen is the main author of the code.

parsec logo

PARSEC PARSEC is a Fortran-95 software package designed for ab initio quantum-mechanical calculations of the electronic structure of matter, within density-functional theory. It solves the Kohn-Sham equations by expressing electron wave-functions directly in real space, without the use of explicit basis sets. It uses norm-conserving pseudopotentials (Troullier-Martins and other varieties). Much of the seminal work on this code was done at the university of Minnesota as a collaborative effort between our team (YS) and a materials science team (James R. Chelikowsky, dept of CEMS). Subsequent work on the code reflects efforts from three institutions: Univ. of Minnesota, the University of Texas at Austin (where prof. Chelikowsky moved in 2005), and the Weizmann Institute.
The latest version of PARSEC is posted here temporarily (more information will be available later from the U. Texas site)

* RSDFT * RSDFT - [Real Space Density Functional Theory] is a matlab code for performing electronic structure calculations using the density functional theory approch in real-space. See also PVOX - a related matlab tool for visualization. These two packages are no longer supported - so you are on your own.

Work supported by NSF