Coding Examples
Developer Information

Application Examples


accelerator cavities




SuperLU is a general purpose library for the direct solution of large, sparse, nonsymmetric systems of linear equations on high-end computers. The library is written in C and is callable from either C or Fortran.

The library routines perform an LU decomposition with numerical pivoting and triangular system solves through forward and back substitution. The LU factorization routines can handle non-square matrices but the triangular solves are performed only for square matrices. The matrix columns may be preordered (before factorization) either through library or user supplied routines. This preordering for sparsity is completely separate from the factorization. Working precision iterative refinement subroutines are provided for improved backward stability. Routines are also provided to equilibrate the system, estimate the condition number, calculate the relative backward error, and estimate error bounds for the refined solutions.

The routines have been carefully designed for optimal performance in solving large systems on modern computer architectures. The factorization algorithm uses a graph reduction technique to reduce graph traversal time in the symbolic analysis, and data movement between levels of the memory hierarchy is reduced through loop ordering and the use of dense matrix operations in the numerical kernel. For the distributed memory implementation, a two-dimensional block cyclic matrix distribution is used to enhance scalability.

SuperLU contains a collection of three related subroutine libraries: sequential SuperLU for uniprocessors, the multithreaded version (SuperLU_MT) for medium-size SMPs, and the MPI version (SuperLU_DIST) for large distributed memory machines. All these implementations are portable across many different platforms.


Coding Examples

Example program Description
pddrive.c Use PDGSSVX with the full (default) options to solve one linear system.
pddrive1.c Solve the systems with same A but different right-hand side. Reuse the factored form of A.
pddrive2.c Solve the systems with the same sparsity pattern of A. Reuse the sparsity ordering.
pddrive3.c Solve the systems with the same sparsity pattern and similar values. Reuse the sparsity ordering and symbolic factorization.
pddrive4.c Divide the processors into two subgroups (two grids) such that each subgroup solves a linear system independently from the other.
pnslac.c Example code that uses PARPACK and SuperLU_DIST to solve a generalized eigenvalue problem. Uses the nonsymmetric solver of ARPACK: pdnaupd. NOTE: Aztec is used for sparse matrix-vector multiplication.

Developer Information

SuperLU was developed at the UC Berkeley Computer Science Division and at NERSC for general use in the direct solution of large, sparse, nonsymmetric systems of linear equations on high performance machines. Its principal developers were Jim Demmel, John Gilbert and Xiaoye (Sherry) Li.

Tools News Home