WIP: Block Krylov methods
This MR contains a cleaned up version of the code from my PhD thesis. It introduces the infrastructure for block Krylov methods and three block Krylov methods, namely block CG, block GMRes and block BiCGSTAB. It builds up on the multi right-hand side support with SIMD data types.
The solvers can be constructed via the SolverFactory
. For that the code of the SolverFactory
must be slightly adapted to provide a InnerBlockProduct
to the solver, which is a extension of a ScalarProduct
. The rest of the code is non-invasive.
For good performance it is crucial to use proper implementations of the axpy and dot kernels in the ParallelMatrixAlgebra
. This depends on the used SIMD type. To make it configurable I introduced a CMake variable DUNE_BLOCKKRYLOV_BLAS_PRIORITY
. I'm not sure whether this is a proper way for that.
I'm looking forward to you feedback and comments.