Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Understanding the permutation in QRMumps #106

Closed
MaxenceGollier opened this issue Sep 9, 2024 · 4 comments
Closed

Understanding the permutation in QRMumps #106

MaxenceGollier opened this issue Sep 9, 2024 · 4 comments

Comments

@MaxenceGollier
Copy link
Collaborator

MaxenceGollier commented Sep 9, 2024

I am having a hard time to understand what permutation is automatically done in QRMumps.
More precisely, I am trying to implement a QLP factorization in order to solve the least-norm problem

$$\min \|x\| \ \text{subject to } Ax = b.$$

This requires taking a QR factorization with a rank revealing column permutation if I understand correctly.
My question is: are the permutations in QRMumps appropriate for this ?
I have been trying to implement it for a while but can't get it to work on larger problems where specific permutations (I am guessing rank revealing ones) are necessary.

## Problem specific parameters
* **qrm\_ordering**: this parameter specifies what permutation to apply to the columns of the input matrix in order to reduce the fill-in and, consequently, the operation count of the factorization and solve phases. This parameter is used by **qr\_mumps** during the analysis phase and, therefore, has to be set before it starts. The following pre-defined values are accepted:
* **qrm\_auto** (0) : the choice is automatically made by **qr\_mumps**. This is the default.

In all cases, perhaps the documentation could be a little more specific on the permutations performed ?

@dpo
Copy link
Member

dpo commented Sep 16, 2024

@abuttari Would you have a moment to help @MaxenceGollier here? We're trying to compute a complete orthogonal decomposition. Thanks!

@amontoison
Copy link
Member

amontoison commented Sep 16, 2024

@MaxenceGollier @dpo
A rank-revealing column permutation is computed during the factorization phase because it depends on the values.

The permutation described in the documentation for the analysis phase aims to reduce the fill-in in the factors and is based only on the sparsity pattern of the sparse matrix A.

@abuttari
Copy link
Contributor

yes, @amontoison is right, the column permutation in qrm is only meant to reduce the fill-in generated during the factorization. To the best of my knowledge, there is no sparse QR solver that also does a rank-revealing permutation during the factorization; this is way too complex to implement and, furthermore, as the drawback of increasing the fill-in and thus the operational complexity. SuiteSparseQR does some kind of reank-revealing QR factorization without permuting the columns of $A$ (it simply skips columns where $R$ has diagonal coefficients smaller than a prescribed threshold).
I imagine your $A$ matrix is rank-deficient? If not a plain, non rank-revealing QR factorization will work.

@MaxenceGollier
Copy link
Collaborator Author

Thank you @abuttari !

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants