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

cluster_sparse_solver Schur complement matrix - can't get it to work

Laura_S_3
Beginner
656 Views

Hi all,

Has anyone had luck getting the new Schur Complement matrix option (iparm(36)) to work with MKL 2018 release 2? I am not having luck, and can't find any example programs that use this option. If anyone has an example, I'd love to see it. Otherwise I'll post my best attempt at making it work to see if anyone can figure out what is wrong.

Laura

0 Kudos
4 Replies
Gennady_F_Intel
Moderator
656 Views

You may take a look at the mklroot\examples\solverc\source\ pardiso_schur_c.c  example 

0 Kudos
Laura_S_3
Beginner
656 Views

OK, that helped with the parameters. Thank you!

A couple of notes for future readers:

1) The interface is touchy - some parameters that look innocuous can cause the program not to run. Specifically, initialize the "ignored" parameters maxfct and mnum to 1 and make sure iparm(13) = 0. (At least, that is how the current release is working.)

2) The pardiso_schur_c.c  example included with this release uses an asymmetrical matrix but tells Pardiso it is symmetric. So the reported Schur matrix won't match the Schur matrix computed other ways unless you account for this.

0 Kudos
Gennady_F_Intel
Moderator
656 Views

wrt #2: mkl 2018 u2 contains symmetric input:

    MKL_INT ia[9] = { 1, 5, 8, 10, 12, 15, 17, 18, 19};
    MKL_INT ja[18] = { 1, 3, 6, 7,
        2, 3, 5,
        3, 8,
        4, 7,
        5, 6, 7,
        6, 8,
        7,
        8
    };
    double a[18] = { 7.0, 1.0, 2.0, 7.0,
        -4.0, 8.0, 2.0,
        1.0, 5.0,
        7.0, 9.0,
        5.0, 1.0, 5.0,
        -1.0, 5.0,
        11.0,
        5.0
    };

 

0 Kudos
Laura_S_3
Beginner
656 Views

Let me clarify: The matrix A as specified by the input ia, ja, and a above is neither symmetric nor structurally symmetric. However, mtype is set to -2 (real symmetric). This is not a bug in the program, merely a confusing detail.

Edit: Only the upper right triangle is specified, as that is all that is needed, and the lower triangle is the reflection.

0 Kudos
Reply