A C++20 implementation of a Block Lanczos eigensolver with thick restarting scheme for computing eigenvalues and eigenvectors of large sparse matrices.
The library is designed with a flexible backend architecture that allows different multivector implementations to be easily integrated. This enables the use of specialized hardware implementations, such as GPU-accelerated backends, without modifying the core algorithm.
Currently provides an OpenMP backend for CPUs and a SYCL backend using AdaptiveCpp (other SYCL implementations probably work as well but are not tested). The SYCL backend is experimental.
Requires:
- CMake
- C++20 compatible compiler
- Eigen
- Optionally AdaptiveCpp for the SYCL backend
If only the OpenMP backend should be built:
mkdir build && cd build
cmake ..
makeRun tests:
ctest