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

Which decomposition does dss_factor_real() compute?

agnonchik
Beginner
219 Views
Seems that the dss_factor() function decomposes a symmetric positive-definite matrix A either as L*L^T or as U*U^T.
My observation is that both representations are possible.

Fro example, if A=[14, 2, -2; 2, 4, 0; -2, 0, 1], it computes U*U^T with U=[3, 1, -2; 0, 2, 0; 0, 0, 1].
On the contrary, if A=[5, -2, -6; -2, 5, 3; -6, 3, 9], it computes L*L^T.
The type of decomposition is important when only forward or only backward substitution is performed by a subsequent dss_soleve_real() call with either MKL_DSS_FORWARD_SOLVE or MKL_DSS_BACKWARD_SOLVE option.

Is there any control to fix this vulnerability and always compute L*L^T?
0 Kudos
2 Replies
Alexander_K_Intel2
219 Views
Quoting - agnonchik
Seems that the dss_factor() function decomposes a symmetric positive-definite matrix A either as L*L^T or as U*U^T.
My observation is that both representations are possible.

Fro example, if A=[14, 2, -2; 2, 4, 0; -2, 0, 1], it computes U*U^T with U=[3, 1, -2; 0, 2, 0; 0, 0, 1].
On the contrary, if A=[5, -2, -6; -2, 5, 3; -6, 3, 9], it computes L*L^T.
The type of decomposition is important when only forward or only backward substitution is performed by a subsequent dss_soleve_real() call with either MKL_DSS_FORWARD_SOLVE or MKL_DSS_BACKWARD_SOLVE option.

Is there any control to fix this vulnerability and always compute L*L^T?

Hi
Pardiso do L*L^T only but for reodered matrix A. Of course result of such decomposition of matrix A without reodering is not the same of L*L^Tdecompositionreodered matrix A. If you want to have L*L^T decompositionof matrix A the best way to choose your own type of reodering in dss_reorder by choosing parameter opt= MKL_DSS_MY_ORDER with vector perm=(1,2,3,....)
with best regards,
Alexander Kalinkin
0 Kudos
agnonchik
Beginner
219 Views

Hi
Pardiso do L*L^T only but for reodered matrix A. Of course result of such decomposition of matrix A without reodering is not the same of L*L^Tdecompositionreodered matrix A. If you want to have L*L^T decompositionof matrix A the best way to choose your own type of reodering in dss_reorder by choosing parameter opt= MKL_DSS_MY_ORDER with vector perm=(1,2,3,....)
with best regards,
Alexander Kalinkin


Thanks,
Agnonchik.
0 Kudos
Reply