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.
A recent 64-bit Linux (e.g., CentOS 7.9 with devtoolset-8) or macOS (e.g., Big Sur) is needed.
Run make
as follows:
make [COMPILER=x64x|x200|x64|gnu] [MARCH=...] [NDEBUG=optimization_level] [ABI=ilp64|lp64] [WP=...] [all|clean|help]
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 with COMPILER=gnu
.
On RHEL/CentOS 7 it is provided by, e.g., devtoolset-8.
By default, ABI=ilp64
, meaning that for Fortran 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).