- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

Hi,

I try to combine pardiso_schur.c with pardiso_export, and i want to get the Schur complement matrix and also compute all factorization arrays.

After read the develop reference and sample code of pardiso_export, i set iparms like this:

```
for ( i = 0; i < 64; i++ )
{
iparm[i] = 0;
}
iparm[1-1] = 1; /* No solver default */
iparm[2-1] = 2; /* Fill-in reordering from METIS */
iparm[10-1] = 8; /* Perturb the pivot elements with 1E-13 */
iparm[11-1] = 0; /* Use nonsymmetric permutation and scaling MPS */
iparm[13-1] = 0; /* Maximum weighted matching algorithm is switched-off (default for symmetric). Try iparm[12] = 1 in case of inappropriate accuracy */
iparm[14-1] = 0; /* Output: Number of perturbed pivots */
iparm[18-1] = -1; /* Output: Number of nonzeros in the factor LU */
iparm[19-1] = -1; /* Output: Mflops for LU factorization */
iparm[36-1] = -2; /* Use Schur complement */
iparm[24-1] = 1;
maxfct = 1; /* Maximum number of numerical factorizations. */
mnum = 1; /* Which factorization to use. */
msglvl = 1; /* Print statistical information in file */
error = 0; /* Initialize error flag */
```

After pardiso_export, the schur results are:

```
schur_values: -7.64499 -7.72346 19.0363
schur_ia: 0 1 3
scur_ja: 0 0 1
pardiso_schur.c:
-7.644985e+00 -7.723464e+00
-7.723464e+00 1.903631e+01
```

the schur_ia and schur_ja are not correct.

And after phase 22, i check the result of phase 331:

```
0
-7.4
1
1
1
0.588926
-2.14191
2.08939
pardiso_schur.c:
0
0.0931208
1
0.142857
0.2
-0.326816
-2.98962
2.08939
```

it doesn't match either.

Do I set the iparm wrong or other ipram should be set?

Thanks,

Link Copied

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

Hi!

Could you please provide full code which you are running?

From what you described, the usage seems to be correct. And as a quick experiment, do you get correct Schur complement for iparm[36] = 2 (dense) or -1 (sparse)?

Best,

Kirill

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

Hi

I provide the patch of my code on pardiso_schur.c

I tried iparm[36] = -1 for sparse, the schur complement result is the same and result of phase 331 is not correct:

```
# result of schur complement:
schur_values: -7.64499 -7.72346 19.0363
schur_ia: 0 1 3
schur_ja: 0 0 1
pardiso_schur.c:
-7.644985e+00 -7.723464e+00
-7.723464e+00 1.903631e+01
# result of phase 331:
1
0.6
1.85714
1
1
0.588926
-2.14191
2.08939
pardiso_schur.c:
0
0.0931208
1
0.142857
0.2
-0.326816
-2.98962
2.08939
```

and for my understanding, the schur_ia should be: 0 2 3, and schur_ja should be: 0 1 1

Thanks

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

Zhang,

it looks like a real problem and we will escalate it. The thread will be updated if needed.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

While it has no impact on the observed incorrectness, was it intentional that in your patch you additionally set iparm[36]=-1 (as well as iparm[36-1]=-1 for Schur complement option) which additionally adds VBSR feature?

Thanks,

Kirill

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

Hi

I'm not meanful to set iparm[36]=-1. I add two results, for the first one, I don't set iparm[36]=-1.

And I noticed your reply " do you get correct Schur complement for iparm[36] = 2 (dense) or -1 (sparse)?", so I think I can try it.

As a result, the patch has "iparm[36]=-1".

Thanks.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

Thanks for the clarification!

Based on the quick analysis, for symmetric matrix types we do return a lower-triangular CSR for Schur which explains what you see for Schur indexing arrays (they are correct as far as I understand, but just for the lower triangular instead of the upper-triangular which you expected).

As for why the result of phase 331 is incorrect, currently no updates.

Best,

Kirill

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

I see.

It's reasonable that the format is lower-triangular CSR.

BTW, I test pardiso and find both lower-triangular and upper-triangular csr format are accepeted.

Thanks.

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page