A C++ library implementing the rational Arnoldi algorithm for computing orthonormal bases of rational Krylov spaces. Supports sequential and MPI/OpenMP parallel execution. Code by Mario Berljafa.
For details on the algorithm, see
M. Berljafa and S. Güttel. Parallelization of the rational Arnoldi algorithm. SIAM Journal on Scientific Computing, 39 (5): S197–S221, 2017. https://doi.org/10.1137/16M1079178
- Intel oneAPI (icpx compiler, MKL)
- Intel MPI (for parallel builds)
- Linux
Source the Intel oneAPI environment, then:
make -j$(nproc)This produces four shared libraries in lib/:
| Library | Description |
|---|---|
librks.so |
Sequential, single-threaded MKL |
librks-mt.so |
Sequential, MKL with OpenMP threading |
libprks.so |
MPI-parallel, single-threaded MKL |
libprks-mt.so |
MPI-parallel, MKL with OpenMP threading |
The -mt variants use MKL's OpenMP-threaded layer. Control the thread count with OMP_NUM_THREADS or MKL_NUM_THREADS.
make examples
cd examples
./d_tridiag # sequential tridiagonal eigenvalue demo
./d_tridiag_mt # multithreaded variant
mpirun -np 4 ./pd_tridiag # parallel variant
mpirun -np 4 ./pd_tridiag_mt # parallel + multithreadedMIT — see LICENSE.lic.