/SPEX

Primary LanguageC

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