Features
Types of problems
- qr_mumps can handle unsymmetric and symmetric, positive definite problems. In the first case it will use a QR factorization whereas, in the second, it will use a Cholesky factorization. In order to choose one or the other method, qr_mumps must be informed about the type of the problem through the sym argument of the qrm_spmat_init function: false means that the problem is unsymmetric and true means symmetric, positive definite. Note that in the second case, only half of the matrix must be provided, i.e., if the coefficient (i, j) is provided (j, i) must not be given.
Memory consumption control
- qr_mumps allows for controlling the amount of memory used in the parallel factorization stage. In the multifrontal method, the memory consumption varies greatly throughout the sequential factorization reaching a maximum value which is referred to as the sequential peak (sp). Parallelism can considerably increase this peak because, in order to feed the working threads, more data is allocated at the same time which results in higher concurrency. In qr_mumps it is possible to bound the memory consumption of the factorization phase through the qrm_mem_relax parameter. If this parameter is set to a real value x ≥ 1, the memory consumption will be bounded by x × sp. Clearly, the tighter is this upper bound, the slower the factorization will proceed. Note that sp only includes the memory consumed by the factorization operation; moreover, although in practice it is possible to precisely pre-compute this value in the analysis phase, this may be expensive and thus qrm_analyse only computes a (hopefully) slight overestimation. The value of sp is available upon completion of the analysis phase through the qrm_e_facto_mempeak information parameter.
Fill-reducing permutations
- qr_mumps supports multiple methods for reducing the factorization fill-in through matrix column permutations. The choice is controlled through the qrm_ordering control parameter. Nested-dissection based methods are available through the packages Metis and SCOTCH packages as well as average minimum degree through the COLAMD one. Nested-dissection based methods usually lead to lower fill-in which ultimately results in faster and less memory consuming factorization. COLAMD, instead, typically leads to a faster execution of the analysis phase although is not as effective in reducing the fill-in which may result in a slower and more memory consuming factorization. Because the overall execution time is commonly dominated by the factorization, nested-dissection methods are usually more effective especially for large size problems. qr_mumps also allows the user to provide their own permutation.