What are the differences between supernodal and multifrontal matrix factorizations? Can you provide a few references or high-level points about the approaches?

  • 3
    $\begingroup$ Possible duplicate of Supernodal vs. Multifrontal Matrix Decompositions $\endgroup$ – Bill Greene Feb 6 '18 at 0:10
  • $\begingroup$ I saw this question, but it seemed to be more focused on "restrictions for when supernodal vs. multifrontal methods can be applied". Also, the answer provided a performance comparison but not an explanation of the approahces $\endgroup$ – jjjjjj Feb 6 '18 at 3:11
  • 2
    $\begingroup$ @jjjjjj Then you should expand this question to make clearer what exactly you are really looking for -- just asking for "differences" usually means "practical differences" (e.g., in applicability or performance), hence Bill Greene's comment. Also, what's your background? $\endgroup$ – Christian Clason Feb 6 '18 at 8:50

The scopes of these terms are (in my opinion) somewhat different.

I'd use "supernodal" as a broad term, to describe any sparse direct solver that applies sufficient intelligence during the symbolic analysis phase to recognize consecutive columns that share the same nonzero structure, and reorder/aggregate them into one "supervariable" that will be eliminated, backsolved and schur-downdated simultaneously. As indicated in the other question, these operations can use BLAS3 arithmetic and deliver higher performance than "scalar" solvers. Some solvers are very aggressively supernodal, and will introduce new stored-zeroes into the pattern, if it leads to better coarsening of elimination tree (more BLAS3 than BLAS2). This is not unlike the landscape of dense algorithms, which might happily perform extra BLAS3 work yet still end up being faster than a conventional BLAS2/BLAS1 algorithm that expends fewer flops (but is overall less coherent).

On the other hand, "multifrontal" is a narrower term, which implies a particular storage and scheduling strategy for a "right-looking" factorization. Their key feature is the introduction of additional (small, numerous, memory-contiguous) workspaces that hold the schur-downdates due to each supernode. This strategy relaxes/forestalls a "write race" in the right-looking algorithm and exposes parallelism across multiple branches of the elimination tree. If you look at the actual data structures involved in multifrontal methods, they're not array-like CSR/CSC layouts, they're all tracking small dense fragments of numeric storage that dangle off some underlying symbolic DAG's/trees. Multifrontal methods are generally supernodal as well (but the reverse is not true, as there are many supernodal solvers that are not at all based on multifrontal techniques).

In my experience, multifrontal methods are harder to write (initially) but easier to parallelize (later). They tend to use more memory (the workspaces), but can be refactored into out-of-core solvers with modest effort.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.