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

Compute schur complement with Pardiso in out-of-core mode

Jens_E_
New Contributor I
578 Views

Hi,

I'm using pardiso_64 with intel mkl 11.3.3.1.

I am computing the Schur complement of SPD matrices (mtype = 2). In in-core mode everything is OK. In out-of-core mode (iparm(60)=2), I get no error code, but just an all-zero solution matrix. 

My iparm array is as follows: 
iparm(1) = 1;
iparm(10)=8;
iparm(21)=1;
iparm(35)=1; 
iparm(60)=2;

(otherwise zero values).

I've set the phase parameter to 12.

Am I doing something wrong, or is only in-core mode possible for Schur complement calculation?

Best,
Jens

0 Kudos
8 Replies
Zhen_Z_Intel
Employee
578 Views

Hi Jens,

I can reproduce your problem. we will investigate on this problem. Thank you for posting.

Best regards,
Fiona

0 Kudos
Jens_E_
New Contributor I
578 Views

Thanks!

While waiting for the investigation: are there other options within MKL to (easiliy) compute the Schur complement for sparse matrices, using the DSS interface for example?

Jens

0 Kudos
Zhen_Z_Intel
Employee
578 Views

Hi Jens,

We checked that Schur complement compute only for in-core mode of PARDISO in current version. I am afraid only pardiso provided implementation for Schur complement matrix, but DSS & Iterative solver do not provide. 

0 Kudos
Jens_E_
New Contributor I
578 Views

Okay, thanks for letting me know.

0 Kudos
Taylor_B
Beginner
578 Views

Fiona and readers,

I am having the same issue that Jens was having and there has been no mention of the functionality to compute the Schur complement while using out-of-core in any of the recent release notes. Is Intel planning to make it possible to compute the Schur complement using OOC stored factors for either PARDISO or the Parallel Direct Sparse Solver for Clusters Interface?

In the mean time, are there packages you are able to suggest that are MPI and thread parallel that can compute the Schur complement on a large sparse matrix with an ability to distribute the Schur block? MKL's Parallel Direct Sparse Solver for Clusters interface would work however, it stores the Schur block on a single node which, for my problems, uses all the nodes memory and brings down the node.

I am using Intel MKL 2018 update 2.

Thank you for your time,

Taylor

0 Kudos
Alexander_K_Intel2
578 Views

Hi,

MKL 2018.2 support Schur complement computation in OOC Intel MKL Pardiso in case matching and scaling are switched off

Thanks,

Alex

0 Kudos
Taylor_B
Beginner
578 Views

Alex and readers, 

I believe I interpreted your statement correctly. However, to confirm, do you mean that both matching and scaling must be turned off for the Schur complement operation to be compatible with OOC? Or do you mean that they have to both be enabled to get Schur to be compatible with OOC?

I have tried both and am still getting the same result(zero result for Schur block). MType is 13 (complex non-symmetric). Below are my iparm settings

iparm(1) = 1 ! Default parameters overriden with provided by iparm
iparm(2) = 2 ! METIS for fill-in reordering
iparm(10) = 13 ! Perturb the pivot elements with 1E-13 */
iparm(11) =  1 ! Use nonsymmetric permutation and scaling MPS */
iparm(13) =  1 ! Switch on Maximum Weighted Matching algorithm (default for non-symmetric) */
iparm(18) = -1 ! Output: Number of nonzeros in the factor LU */
iparm(19) = -1 ! Output: Mflops for LU factorization */
iparm(27) =  1 ! Check input data for correctness */
iparm(35) =  0 ! One-based indexing */
iparm(36) =  1 ! Schur complement matrix computation
iparm(60) =  2 ! OOC Mode

Thank you

Taylor

0 Kudos
Alexander_K_Intel2
578 Views

Hi Taylor,

Can you also set iparm(24) to 1, iparm(11), iparm(13) to 0 and try to run pardiso again?

Thanks,

Alex

0 Kudos
Reply