Awesome
SPEX is a software package for SParse EXact algebra
Files and folders in this distribution:
README.md this file
AMD Approximate minimum degree ordering for
preordering matrices prior to factorization.
Please see www.suitesparse.com for more information
COLAMD Column approximate minimum degree ordering
for preordering matrices prior to factorization.
Please see www.suitesparse.com for more information
include Header files for SPEX that are generated by
the general makefile
SPEX Folder containing the SPEX package
SuiteSparse_config Configuration for all SuiteSparse functions.
Please see www.suitesparse.com for information
Dependencies of SPEX:
AMD approximate minimum degree ordering
COLAMD column approximate minimum degree ordering
SuiteSparse_config configuration for all of SuiteSparse
GNU GMP GNU Multiple Precision Arithmetic Library
for big integer operations
GNU MPFR GNU Multiple Precision Floating-Point Reliable
Library for arbitrary precision floating point
operations
Default 'local' instalation locations:
include
lib
bin
To compile SPEX and its dependencies, a very simple top-level Makefile is provided. All it does is use cmake to build each of the packages.
Makefile to compile all of SPEX and its dependencies
make compiles SuiteSparse libraries.
Subsequent "make install" will install
in just /usr/local/lib.
Normally requires "sudu make install"
make local compiles SuiteSparse.
Subsequent "make install will install only
in ./lib, ./include only. No sudo required.
Does not install in /usr/local/lib.
make global compiles SuiteSparse libraries.
Subsequent "make install" will install in
just /usr/local/lib (or whatever your
CMAKE_INSTALL_PREFIX is).
Normally requires "sudu make install"
Does not install in ./lib and ./include.
make install installs in the current directory
(./lib, ./include), and/or in
/usr/local/lib and /usr/local/include,
depending on whether "make", "make local",
"make global", or "make both",
etc has been done.
make demos run a few short demos
make uninstall undoes 'make install'
make distclean removes all files not in distribution, including
./bin, ./lib, and ./include.
make purge same as 'make distclean'
make clean removes all files not in distribution, but
keeps compiled libraries and demoes, ./lib
and ./include.
You can set specific options for CMake with the command (for example):
CMAKE_OPTIONS="-DNSTATIC=1 -DCMAKE_BUILD_TYPE=Debug" make
That command will compile all of SPEX and it dependencies. Debug mode will be used. The static libraries will not be built (NSTATIC is true).
CMAKE_BUILD_TYPE: Default: "Release", use "Debug" for debugging.
GLOBAL_INSTALL: if true, "make install" will install
into /usr/local/lib and /usr/local/include.
Default: true
LOCAL_INSTALL: if true, "make install" will install
into SuiteSparse/lib and SuiteSparse/include.
Default: false
NSTATIC: if true, static libraries are not built.
Default: false, except for GraphBLAS, which
takes a long time to compile so the default for
GraphBLAS is true. For Mongoose, the NSTATIC setting
is treated as if it always false, since the mongoose
program is built with the static library.
NOPENMP if true: OpenMP is not used. Default: false.
Only used by SuiteSparse_config.
DEMO if true: build the demo programs for each package.
Default: false.
You can also use cmake or ccmake directly. For example, try:
cd AMD/build
ccmake ..
make
Acknowledgements
We would like to thank François Bissey, Sebastien Villemot, Erik Welch, Jim Kitchen, Markus Mützel, and Fabian Wein for their valuable feedback on the SuiteSparse build system and how it works with various Linux / Python distros and other package managers. If you are a maintainer of a SuiteSparse packaging for a Linux distro, conda-forge, R, spack, brew, vcpkg, etc, please feel free to contact us if there's anything we can do to make your life easier.
See also the various Acknowledgements within each package.
Primary Author: Chris Lourenco
Coauthors (alphabetical order):
Jinhao Chen
Timothy A Davis
Lorena Mejia Domenzain
Erick Moreno-Centeno