Intel® oneAPI Math Kernel Library
Ask questions and share information with other developers who use Intel® Math Kernel Library.
6977 Discussions

Using LU to calculate partial inversion of sparse matrice

apocalx
Beginner
384 Views
Is there a way to have a direct access to LU factorization of a sparse matrix?
I have a highly sparse matrice and I need to invert them, but I need only somes values.
Complete inversion of a matrix take very long time to perform, but partial inversion is very very fast (in theory, same time than factorization of matrix).
I used this publication ( https://hpcrd.lbl.gov/~linlin/publications/diagex.pdf) to writea small program to be able to invert only some value of my sparse matrix, but to do that, I need to have access to LU factorization.
Thanks you
Marc
0 Kudos
2 Replies
Chao_Y_Intel
Moderator
384 Views

Hello Marc,

here is some comment from the expert, wouldthat be helpful to solve the problem:
PARDISO now supports sparse RHS and solution vectors (iparm(31)). Using this switch it might be possible to get a block of an inverse matrix faster than a complete inverse matrix. The idea is the same as mentioned below we solve a system AX=B. If B is an identity matrix, then X=inverse(A). If the customer wants to have partial inverse, she should use sub-matrix of an identity matrix and indicate that only partial solution is needed through iparm(31) and proper perm settings as described in MKL Manual.

Thanks,
Chao

0 Kudos
apocalx
Beginner
384 Views
I need values of inversion in each line of my matrix. Idealy, I need inverse value of all non-zero values of my original matrix.
So, using permutation vector will not be faster.
The better and fastest way to calculate partial inversion is algorithm described earlier. But to do that, we need to have access to L and U.
I know that UMFpack solver gives access to L et U after factorization.
I think one interesting solution would be to give access to the L and U after the factorization like in UMFPack.
Another solution would be to implement the algorithm described earlier in Intel PARDISO.
Thanks
Marc
0 Kudos
Reply