SuiteSparse is a suite of sparse matrix algorithms, including: UMFPACK(multifrontal LU factorization), CHOLMOD(supernodal Cholesky, with CUDA acceleration), SPQR(multifrontal QR) and many other packages.

Availability and Restrictions


OSC supports most packages in SuiteSparse, including UMFPACK, CHOLMOD, SPQR, KLU and BTF, Ordering Methods (AMD, CAMD, COLAMD, and CCOLAMD) and CSparse. SuiteSparse modules are available for the Intel, GNU, and Portland Group compilers. The following versions of SuiteSparse are available at OSC.

Version Owens
4.5.3 X*
* Current default version

You can use module spider suitesparse to view available modules for a given machine. Feel free to contact OSC Help if you need other versions for your work.

NOTE: SuiteSparse library on our clusters is built without METIS, which might matter if CHOLMOD package is included in your program.


SuiteSparse is available to all OSC users. If you have any questions, please contact OSC Help.

Publisher/Vendor/Repository and License Type

Timothy A. Davis, Patrick R. Amestoy, and Iain S. Duff./ Open source


Usage on Owens

Set-up on Owens

To use SuitSparse, ensure the correct compiler is loaded. User module spider suitesparse/version to view compatible compilers. Before loading the SuiteSparse library, MKL is also required. Load the MKL library with module load mkl. Then with the following command, SuiteSparse library is ready to be used: module load suitesparse

Building With SuiteSparse

With the SuiteSparse library loaded, the following environment variables will be available for use:

Variable Use
$SUITESPARSE_CFLAGS Include flags for C or C++ programs.
$SUITESPARSE_LIBS Use when linking your program to SuiteSparse library.

For example, to build the code my_prog.c with the SuiteSparse library you would use:

icc -c my_prog.c
icc -o my_prog my_prog.o $SUITESPARSE_LIBS

Batch Usage on Owens

When you log into you are actually logged into a linux box referred to as the login node. To gain access to the mutiple processors in the computing environment, you must submit your job to the batch system for execution. Batch jobs can request mutiple nodes/cores and compute time up to the limits of the OSC systems. Refer to Queues and Reservations and Batch Limit Rules for more info.  Batch jobs run on the compute nodes of the system and not on the login node. It is desirable for big problems since more resources can be used.

Non-interactive Batch Job (Serial Run)
A batch script can be created and submitted for a serial or parallel run. You can create the batch script using any text editor you like in a working directory on the system of your choice. You must load the SuiteSparse module in your batch script before executing a program which is built with the SuiteSparse library. Below is the example batch script that executes a program built with SuiteSparse:
#SBATCH --job-name MyProgJob
#SBATCH --nodes=1 --ntasks-per-node=28
#SBATCH --account <project-account>

module load gnu/4.8.4
module load mkl
module load suitesparse

cp foo.dat $TMPDIR
my_prog < foo.dat > foo.out
cp foo.out $SLURM_SUBMIT_DIR

Further Reading

See Also