Skip to content

WIP: Block Krylov methods

Nils-Arne Dreier requested to merge blockkrylov into master

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.

Edited by Nils-Arne Dreier

Merge request reports