Ifpack2: More modular software architecture (esp. triangular solves & ILU)
Created by: mhoemmen
@trilinos/ifpack2 @trilinos/amesos2
This relates to the recent addition of Basker's thread-parallel incomplete LU factorization (ILU) to Ifpack2::RILUK
. I really appreciate all the work that people are doing in Ifpack2 to improve support for thread parallelism.
What I see happening is that a lot of us are patching what amount to entirely new preconditioners, into existing classes. I've been doing that with BlockCrsMatrix, and others have been doing that with other classes. I think that's OK for prototyping, but I worry that eventually it will make the classes super complicated. It may also add complication time.
It would be good to remember LinearSolver and LinearSolverFactory at this point. We already have plenty of different ways to achieve abstraction. For example, maybe it's appropriate to treat thread-parallel sparse triangular solves as an "inner solver." If we don't want to expose a new solver in Ifpack2's public interface, we can put it in the Ifpack2::Details
namespace. I'm not sure if we have to worry about it for Basker, but I want people to keep this in mind going forward.
Thanks all!