Skip to content

venovako/JACSD

Repository files navigation

JACSD

Some utilities for the Jacobi-type (G/H)SVD algorithms and beyond, plus a Cosine-Sine Decomposition tester.

Available here (for now):

  • a multi-precision BLAS library (qxblas) [1,2,5],
  • an orthogonality checker (tortho) [1,2,5],
  • an SVD test data generator (tgensvd) [5],
  • a GSVD test data generator (tgengsvd) [2],
  • a HSVD test data generator (tgenhsvd) [3],
  • a skew-symmetric/Hermitian test data generator (tgenskew) [4],
  • a Jacobi strategies library (jstrat) [1,2,5],
  • a symmetric/Hermitian EVD test data generator (tgenevd) [6],
  • a utility library (vn) [1,2,3],
  • the first attempt of a shared-memory vectorized Jacobi-type SVD (see VecJac repository for a better version),
  • and some testing code for the LAPACK CS (src).

[1] This subdirectory is also a part of the supplementary material for or otherwise related to the paper doi:10.1137/19M1277813 with the preprint at arXiv:1907.08560 [math.NA].

[2] This subdirectory is also a part of the supplementary material for or otherwise related to the paper doi:10.1177/1094342020972772 with the preprint at arXiv:1909.00101 [math.NA].

[3] This subdirectory is also a part of the supplementary material for or otherwise related to the paper doi:10.1007/s11075-021-01197-4 with the preprint at arXiv:2003.06701 [math.NA].

[4] This subdirectory is also a part of the supplementary material for or otherwise related to the paper doi:10.1016/j.amc.2020.125263 with the preprint at arXiv:1909.00092 [math.NA].

[5] This subdirectory is also a part of the supplementary material for or otherwise related to the paper doi:10.1137/22M1478847 with the preprint at arXiv:2202.08361 [math.NA].

[6] This subdirectory is also related to the paper doi:10.1016/j.cam.2024.116003.

Building

Prerequisites

A recent 64-bit Linux (e.g., CentOS 7.9 with devtoolset-8) or macOS (e.g., Big Sur) is needed.

Have the Intel MKL (Math Kernel Library) installed.

Make options

Run make as follows:

make [COMPILER=gnu|x64|x64x|x200|nvidia] [NDEBUG=0|1|2|3|4|5] [ABI=ilp64|lp64] [all|clean|help]

where COMPILER should be set for the Intel C/C++ and Fortran compilers (version 19.1+/2020+ recommended) to x64 (deprecated) or x64x for Xeons, or to x200 for Xeon Phi KNLs, respectively. If COMPILER is not set, GNU C/C++/Fortran compilers will be used by default.

GNU Fortran versions 9 and above are not supported (though they might work)! Please take a look here for the explanation regarding the MAX and MIN intrinsics. Currently, only GNU Fortran 8 is fully supported. On RHEL/CentOS it is provided by, e.g., devtoolset-8.

By default, ABI=ilp64, meaning that for Fortran and MKL it is assumed that INTEGER type is 8-byte-wide. The more common ABI=lp64 is not tested and may not work.

Here, NDEBUG should be set to the desired optimization level (3 is a sensible choice). If unset, the predefined debug-mode build options will be used.

For example, make COMPILER=x200 NDEBUG=3 clean all will trigger a full, release-mode rebuild for the KNLs.

This work has been supported in part by Croatian Science Foundation under the project IP-2014-09-3670 (MFBDA).

About

Some utilities for the Jacobi-type SVD algorithms and beyond, plus a Cosine-Sine Decomposition tester.

Topics

Resources

License

Stars

Watchers

Forks