Dear Intel MKL experts,
I would like to ask for help with the use
of the Intel MKL interface to PARDISO.
Assume that you have a sparse matrix
A partitioned into 2x2 blocks
A= [ A_II A_IG ]
[ A_GI A_GG ],
and that you want to solve linear systems
with A and A_II using only one sparse LU
decomposition of the global system A:
A = [L_II 0] [U_II U_IG]
[L_GI L_GG] [0 U_GG]
Neglecting pivoting for numerical
stability, the solution of linear systems
of the form A_II x_I = b_I can be performed
as follows:
1) Solve [L_II 0] [y_I] = [b_I]
[L_GI L_GG] [y_G] = [ * ]
2) Y_G <- 0
3) Solve [U_II U_IG] [ x_I ] = [y_I]
[0 U_GG] [ x_G=0 ] = [ 0 ]
This algorithm can be implemented with
the Intel MKL interface of PARDISO because
it allows to separate among forward and
backward substitution, so that you can
zero-out Y_G between steps 1 and 3. The problem
that I have is that this workaround
is no longer valid when numerical pivoting enters the scene
(for example, with symmetric indefinite matrices)
Do you know whether there is a simple strategy
to tell PARDISO to restrict numerical pivoting
to a particular block (i.e., A_II) or otherwise
to tell PARDISO to solve a subblock given a
global LU factorization of the global system ?.
I want to avoid to compute both a factorization
of A_II and A.
Thanks a lot for your help.
Best regards,
Alberto.
Link Copied
For more complete information about compiler optimizations, see our Optimization Notice.