Skip to content

nla-group/RAIN

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RAIN — Rational Arnoldi ImplementatioN

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

Requirements

  • Intel oneAPI (icpx compiler, MKL)
  • Intel MPI (for parallel builds)
  • Linux

Build

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.

Examples

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 + multithreaded

License

MIT — see LICENSE.lic.

About

A C++ library implementing the rational Arnoldi algorithm. Supports parallelization through MPI/OpenMP.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors