[petsc-dev] plans for preconditioners for SeqSELL

Jed Brown jed at jedbrown.org
Sun Mar 4 17:57:53 CST 2018


"Zhang, Hong" <hongzhang at anl.gov> writes:

> We have thought about subclassing long before. As Barry suggested, an
> ideal solution is to make a base class (XAIJ ?) for AIJ, BAIJ, SBAIJ,
> and SELL. The base class will have diagonal and off diagonal parts
> without binding their storage format to CSR-type. This requires a lot
> of efforts to refactor the current AIJ. But I think we should
> eventually do it.

It sounds like we're mixing the concerns of parallel decomposition (for
which "Seq*" isn't relevant) with the sequential format as some CSR-like
variant.  And apart from a couple abstraction-breaking performance
optimizations (that may not be necessary and could be done differently),
they are nearly independent.

Now there are some good reasons why we might want SeqAIJ to run inside a
different parallel decomposition.  MATIS is one such format.  If we're
serious about working with irregular problems, we'll eventually need a
2D sparse decomposition.  We could get it from an existing package such
as CombBLAS, but if we do preconditioners that depend on matrix format,
we'll likely want it to work on some native format.

Also, we need a better way to do small-size specialization.  I
personally like doing it via inline functions instead of macros and
copy-pasta, though the XL compiler can be offensively negligent.


More information about the petsc-dev mailing list