/EGRSS

Computational methods for extended generator representable p-semiseparable matrices

Primary LanguageCBSD 2-Clause "Simplified" LicenseBSD-2-Clause

EGRSS

Build Status

This project provides implementations of a set of algorithms for computations that involve higher-order extended generator representable semiseparable (EGRSS) matrices such as kernel matrices generated by the spline kernel. The algorithms and their application to smoothing spline regression are described in the following paper:

Martin S. Andersen & Tianshi Chen, “Smoothing Splines and Rank Structured Matrices: Revisiting the Spline Kernel,” SIAM Journal on Matrix Analysis and Applications, vol. 42, no. 2, pp. 389–412, 2020.

DOI

The project currently provides the following:

  • C implementation/library (double precision)
  • Python implementation
  • Julia implementation
  • MATLAB implementation
  • MATLAB MEX interface to C implementation

Building and testing

Cmake 3.13.5 or later:

$ cmake -S . -B build
$ cmake --build build
$ cd build && ctest .

Earlier versions of Cmake:

$ mkdir build
$ cd build && cmake .. && cmake --build .
$ ctest .

Installing the Python package

pip install git+https://github.com/martinandersen/EGRSS.git#subdirectory=src/python

Building the MATLAB MEX interface

$ cmake -S . -B build -DBUILD_MEX=ON
$ cmake --build build

Compiling the C example

The example in examples/c requires BLAS and LAPACK, and this can be configured using the BLA_VENDOR option and by specifying the path via CMAKE_PREFIX_PATH, as illustrated in the following examples.

OpenBLAS

cmake -S . -B build -DBUILD_EXAMPLES=ON -DBLA_VENDOR=OpenBLAS -DCMAKE_PREFIX_PATH=/usr/local/opt/openblas
cmake --build build

MKL

cmake -S . -B build -DBUILD_EXAMPLES=ON -DBLA_VENDOR=Intel10_64lp -DCMAKE_PREFIX_PATH=/opt/intel/lib
cmake --build build

License

This project is licensed under the BSD 2-Clause license.