SparseOrderMTMetis
Specifies type of fill-reducing ordering.
Declaration
var SparseOrderMTMetis: SparseOrder_t { get }Discussion
The order in which variables are eliminated (i.e. the column/row ordering) in a sparse factorization makes a big difference to the size of the resulting factors and amount of work required to calculate them (it is probably the biggest single factor). Minimizing the size or work required is an NP-complete problem, so only heuristics are implemented in this library.
We note that AMD-based orderings tend to be fast and provide good quality for small matrices, whilst nested dissection based orderings (such as metis) are normally considerably slower to compute, but provide better quality orderings for larger problems, and expose more parallelism during the factorization. We recommend AMD is used unless the problem is very large (millions of rows and columns) or you will perform many repeated factorizations. If you are uncertain, try both and see which gives better performance for your usage.
The AMD and MeTiS orderings provide good orderings for symmetric (Hermitian) matrices. They can be used for the QR factorizations, but this involves forming A^TA explicitly, which is expensive. COLAMD on the other hand finds an ordering for A^T A whilst only working with A. For this reason, COLAMD cannot be used for symmetric (Hermitian) factorizations.
SparseOrderDefaultDefault ordering (AMD for symmetric factorizations, COLAMD for QR/CholeskyAtA, and MT-METIS for LU. Defaults may change in future releases if better algorithms become available).
SparseOrderUserUser-supplied ordering, or identity if options->order is NULL
SparseOrderAMDAMD ordering. Large overhead cost if used for QR-based factorization due to explicit formation of
A^T A.SparseOrderMetisMeTiS Nested Dissection ordering. Large overhead cost if used for QR-based factorization due to explicit formation of
A^T A.SparseOrderMTMetisMT-MeTiS Nested Dissection ordering. Similar to
SparseOrderMetis, but uses multiple threads to increase performance at cost of slightly worse ordering quality.SparseOrderCOLAMDColumn AMD ordering for
A^T A. Not valid for symmetric (Hermitian) factorizations (use AMD instead).