> On Mar 4, 2018, at 6:16 PM, Jed Brown <j...@jedbrown.org> wrote: > > Matthew Knepley <knep...@gmail.com> writes: > >> On Sun, Mar 4, 2018 at 6:57 PM, Jed Brown <j...@jedbrown.org> wrote: >> >>> "Zhang, Hong" <hongzh...@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. >>> >> >> I have missed the larger point. What do you think should be done? > > I think the stuff that is currently called "MPIAIJ" should be refactored > to not depend on AIJ at all. That is kind of necessary anyway if SELL > is going to be made to derive from AIJ without also maintaining > AIJ-format storage. Once refactored, that stuff that is currentnly > called "MPIAJ" should be renamed to something that does not include the > substring "AIJ".
I think this is the plan. > > Or are you asking about specialization?