MCPcopy Index your code
hub / github.com/DrTimothyAldenDavis/SuiteSparse

github.com/DrTimothyAldenDavis/SuiteSparse @v7.12.2

Chat with this repo
repository ↗ · DeepWiki ↗ · release v7.12.2 ↗ · + Follow
24,921 symbols 56,572 edges 6,526 files 1,640 documented · 7%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

arch-emu build build-mingw cross-compile macos root-cmakelists root-cmakelists-msvc


SuiteSparse: A Suite of Sparse matrix packages at http://suitesparse.com

Feb 5, 2026, SuiteSparse VERSION 7.12.2

SuiteSparse is a set of sparse-matrix-related packages written or co-authored by Tim Davis, available at https://github.com/DrTimothyAldenDavis/SuiteSparse .

Primary author of SuiteSparse (codes and algorithms, excl. METIS): Tim Davis

Code co-authors, in alphabetical order (not including METIS or LAGraph): Patrick Amestoy, Mohsen Aznaveh, David Bateman, Jinhao Chen, Yanqing Chen, Iain Duff, Joe Eaton, Les Foster, William Hager, Raye Kimmerer, Scott Kolodziej, Chris Lourenco, Stefan Larimore, Lorena Mejia Domenzain, Erick Moreno-Centeno, Markus Mützel, Corey Nolet, Ekanathan Palamadai, Sivasankaran Rajamanickam, Sanjay Ranka, Wissam Sid-Lakhdar, and Nuri Yeralan.

LAGraph has been developed by the highest number of developers of any of the packages in SuiteSparse and deserves its own list. The list also appears in LAGraph/Contibutors.txt:

Janos B. Antal      Budapest University of Technology and Economics, Hungary
Mohsen Aznaveh      Texas A&M University
David A. Bader      New Jersey Institute of Technology
Georgiy Belyanin    St. Petersburg State University
Aydin Buluc         Lawrence Berkeley National Lab
Jinhao Chen         Texas A&M University
Tim Davis           Texas A&M University
Florentin Dorre     Technische Univeritat Dresden, Neo4j
Marton Elekes       Budapest University of Technology and Economics, Hungary
Alexandra Goff      Texas A&M University
Gabriel Gomez       Texas A&M University
Semyon Grigoriev    St. Petersburg State University
Balint Hegyi        Budapest University of Technology and Economics, Hungary
Tanner Hoke         Texas A&M University
James Kitchen       Anaconda
Scott Kolodziej     Texas A&M University
Ilhom Kombaev       St. Petersburg State University
Pranav Konduri      Texas A&M University
Christina Koutsou   Aristotle University of Thessaloniki
Roi Lipman          Redis Labs
Tze Meng Low        Carnegie Mellon University
Vidith Madhu        Texas A&M University
Tim Mattson         Intel
Scott McMillan      Carnegie Mellon University
Markus Muetzel
Hemanth Mukesh      Texas A&M University
Olumayowa Olowomeye Texas A&M University
Casey Pei           Texas A&M University
Michel Pelletier    Graphegon, OneSparse
Darin Peries        Texas A&M University
Cameron Quilici     Texas A&M University
Aurko Routh         Texas A&M University
Gabor Szarnyas      CWI Amsterdam, The Netherlands
Erik Welch          Anaconda, then NVIDIA
Carl Yang           University of California at Davis, Waymo
Yongzhe Zhang       SOKENDAI, Japan

METIS is authored by George Karypis.

Additional algorithm designers: Esmond Ng and John Gilbert.

Refer to each package for license, copyright, and author information.


Documentation

Refer to each package for the documentation on each package, typically in the Doc subfolder.


SuiteSparse branches

  • dev: the default branch, with recent updates of features to appear in the next stable release. The intent is to keep this branch in fully working order at all times, but the features will not be finalized at any given time.
  • stable: the most recent stable release.
  • dev2: working branch. All submitted PRs should made to this branch. This branch might not always be in working order.

SuiteSparse Packages

Packages in SuiteSparse, and files in this directory:

  • AMD

approximate minimum degree ordering. This is the built-in AMD function in MATLAB.

authors: Tim Davis, Patrick Amestoy, Iain Duff

  • bin

where programs are placed when compiled, for make local

  • BTF

permutation to block triangular form

authors: Tim Davis, Ekanathan Palamadai

  • build

folder for default build tree

  • CAMD

constrained approximate minimum degree ordering

authors: Tim Davis, Patrick Amestoy, Iain Duff, Yanqing Chen

  • CCOLAMD

constrained column approximate minimum degree ordering

authors: Tim Davis, Sivasankaran Rajamanickam, Stefan Larimore.

Algorithm design collaborators: Esmond Ng, John Gilbert (for COLAMD)

  • ChangeLog

a summary of changes to SuiteSparse. See */Doc/ChangeLog for details for each package.

  • CHOLMOD

sparse Cholesky factorization. Requires AMD, COLAMD, CCOLAMD, the BLAS, and LAPACK. Optionally uses METIS. This is chol and x=A\b in MATLAB.

author for all modules: Tim Davis

CHOLMOD/Modify module authors: Tim Davis and William W. Hager

CHOLMOD/SuiteSparse_metis: a modified version of METIS, embedded into the CHOLMOD library. See the README.txt files for details. author: George Karypis. This is a slightly modified copy included with SuiteSparse via the open-source license provided by George Karypis. SuiteSparse cannot use an unmodified copy of METIS.

  • CITATION.bib

citations for SuiteSparse packages, in bibtex format.

  • CMakeLists.txt

optional, to compile all of SuiteSparse. See below.

  • CODE_OF_CONDUCT.md

community guidelines

  • COLAMD

column approximate minimum degree ordering. This is the built-in COLAMD function in MATLAB.

authors (of the code): Tim Davis and Stefan Larimore

Algorithm design collaborators: Esmond Ng, John Gilbert

  • Contents.m

a list of contents for 'help SuiteSparse' in MATLAB.

  • CONTRIBUTING.md

how to contribute to SuiteSparse

  • CONTRIBUTOR-LICENSE.txt

required contributor agreement

  • CSparse

a concise sparse matrix package, developed for my book, "Direct Methods for Sparse Linear Systems", published by SIAM. Intended primarily for teaching. Note that the code is (c) Tim Davis, as stated in the book.

For production, use CXSparse instead. In particular, both CSparse and CXSparse have the same include filename: cs.h. This package is used for the built-in DMPERM in MATLAB.

author: Tim Davis

  • CXSparse

CSparse Extended. Includes support for complex matrices and both int or long integers. Use this instead of CSparse for production use; it creates a libcsparse.so (or dylib on the Mac) with the same name as CSparse. It is a superset of CSparse. Any code that links against CSparse should also be able to link against CXSparse instead.

author: Tim Davis, David Bateman

  • Example

a simple package that relies on almost all of SuiteSparse

  • .github

workflows for CI testing on GitHub.

  • GraphBLAS

graph algorithms in the language of linear algebra.

https://graphblas.org

authors: Tim Davis, Joe Eaton, Corey Nolet

  • include

make install places user-visible include files for each package here, after make local.

  • KLU

sparse LU factorization, primarily for circuit simulation. Requires AMD, COLAMD, and BTF. Optionally uses CHOLMOD, CAMD, CCOLAMD, and METIS.

authors: Tim Davis, Ekanathan Palamadai

  • LAGraph

a graph algorithms library based on GraphBLAS. See also https://github.com/GraphBLAS/LAGraph

Authors: many.

  • LDL

a very concise LDL' factorization package

author: Tim Davis

  • lib

make install places shared libraries for each package here, after make local.

  • LICENSE.txt

collected licenses for each package.

  • Makefile

optional, to compile all of SuiteSparse using make, which is used as a simple wrapper for cmake in each subproject.

  • make

    compiles SuiteSparse libraries. Subsequent make install will install in CMAKE_INSTALL_PATH (might default to /usr/local/lib on Linux or Mac).

  • make local

    compiles SuiteSparse. Subsequent make install will install in ./lib, ./include. Does not install in CMAKE_INSTALL_PATH.

  • make global

    compiles SuiteSparse libraries. Subsequent make install will install in /usr/local/lib (or whatever the configured CMAKE_INSTALL_PREFIX is). Does not install in ./lib and ./include.

  • make install

    installs in the current directory (./lib, ./include), or in /usr/local/lib and /usr/local/include, (the latter defined by CMAKE_INSTALL_PREFIX) depending on whether make, make local, or make global has been done.

  • make uninstall

    undoes make install.

  • make distclean

    removes all files not in distribution, including ./bin, ./share, ./lib, and ./include.

  • make purge

    same as make distclean.

  • make clean

    removes all files not in distribution, but keeps compiled libraries and demos, ./lib, ./share, and ./include.

Each individual subproject also has each of the above make targets.

Things you don't need to do:

  • make docs

    creates user guides from LaTeX files

  • make cov

    runs statement coverage tests (Linux only)

  • MATLAB_Tools

various m-files for use in MATLAB

author: Tim Davis (all parts)

for spqr_rank: author Les Foster and Tim Davis

  • Contents.m

    list of contents

  • dimacs10

    loads matrices for DIMACS10 collection

  • Factorize

    object-oriented x=A\b for MATLAB

  • find_components

    finds connected components in an image

  • GEE

    simple Gaussian elimination

  • getversion.m

    determine MATLAB version

  • gipper.m

    create MATLAB archive

  • hprintf.m

    print hyperlinks in command window

  • LINFACTOR

    predecessor to Factorize package

  • MESHND

    nested dissection ordering of regular meshes

  • pagerankdemo.m

    illustrates how PageRank works

  • SFMULT

    C=S*F where S is sparse and F is full

  • shellgui

    display a seashell

  • sparseinv

    sparse inverse subset

  • spok

    check if a sparse matrix is valid

  • spqr_rank

    SPQR_RANK package. MATLAB toolbox for rank deficient sparse matrices: null spaces, reliable factorizations, etc. With Leslie Foster, San Jose State Univ.

  • SSMULT

    C=A*B where A and B are both sparse. This was the basis for the built-in C=A*B in MATLAB, until it was superseded by GraphBLAS in MATLAB R2021a.

  • SuiteSparseCollection

    for the SuiteSparse Matrix Collection

  • waitmex

    waitbar for use inside a mexFunction

  • Mongoose

graph partitioning.

authors: Nuri Yeralan, Scott Kolodziej, William Hager, Tim Davis

  • ParU

a parallel unsymmetric pattern multifrontal method.

authors: Mohsen Aznaveh and Tim Davis

  • RBio

read/write sparse matrices in Rutherford/Boeing format

author: Tim Davis

  • README.md

this file

  • SPEX

solves sparse linear systems in exact arithmetic.

Requires the GNU GMP and MPRF libraries.

This will be soon replaced by a more general package, SPEX v3 that includes this method (exact sparse LU) and others (sparse exact Cholesky, and sparse exact update/downdate). The API of v3 will be changing significantly.

authors: Chris Lourenco, Jinhao Chen, Erick Moreno-Centeno, Lorena Lorena Mejia Domenzain, and Tim Davis.

See https://github.com/clouren/SPEX for the latest version.

  • SPQR

sparse QR factorization. This the built-in qr and x=A\b in MATLAB. Also called SuiteSparseQR.

Includes two GPU libraries: SPQR/GPUQREngine and SPQR/SuiteSparse_GPURuntime.

author of the CPU code: Tim Davis

author of GPU modules: Tim Davis, Nuri Yeralan, Wissam Sid-Lakhdar, Sanjay Ranka

  • ssget

MATLAB interface to the SuiteSparse Matrix Collection

author: Tim Davis

  • SuiteSparse_config

library with common functions and configuration for all the above packages. CSparse, GraphBLAS, LAGraph, and MATLAB_Tools do not use SuiteSparse_config.

author: Tim Davis

  • SuiteSparse_demo.m

a demo of SuiteSparse for MATLAB

  • SuiteSparse_install.m

install SuiteSparse for MATLAB

  • SuiteSparse_paths.m

Core symbols most depended-on inside this repo

GB_Context_nthreads_max
called by 4920
GraphBLAS/Source/context/GB_Context.c
GB_Context_chunk
called by 4908
GraphBLAS/Source/context/GB_Context.c
GB_all_aliased
called by 1378
GraphBLAS/Source/aliased/GB_all_aliased.c
error
called by 776
UMFPACK/Tcov/ut.c
GrB_Matrix_new
called by 553
GraphBLAS/Source/matrix/GrB_Matrix_new.c
GrB_Vector_new
called by 533
GraphBLAS/Source/vector/GrB_Vector_new.c
LAGraph_WallClockTime
called by 422
LAGraph/src/utility/LAGraph_WallClockTime.c
GrB_Matrix_nrows
called by 305
GraphBLAS/Source/matrix/GrB_Matrix_nrows.c

Shape

Function 23,968
Class 590
Method 347
Enum 16

Languages

C91%
C++8%
Java1%
Python1%

Modules by API surface

GraphBLAS/zstd/zstd_subset/compress/zstd_compress.c241 symbols
GraphBLAS/xxHash/xxhash.h150 symbols
CHOLMOD/SuiteSparse_metis/GKlib/gkregex.c146 symbols
GraphBLAS/zstd/zstd_subset/common/xxhash.h135 symbols
GraphBLAS/GraphBLAS/@GrB/private/mexfunctions/gbargminmax.c100 symbols
GraphBLAS/zstd/zstd_subset/decompress/zstd_decompress.c95 symbols
GraphBLAS/Source/global/GB_Global.c91 symbols
SPEX/SPEX_Utilities/Source/SPEX_gmp.c87 symbols
GraphBLAS/lz4/lz4.c81 symbols
LAGraph/deps/json_h/json.h78 symbols
SPQR/Source/spqr_cholmod_wrappers.cpp74 symbols
ssget/ssgui.java67 symbols

For agents

$ claude mcp add SuiteSparse \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact