Quantcast
Channel: Intel® oneAPI Math Kernel Library & Intel® Math Kernel Library
Viewing all articles
Browse latest Browse all 2652

Segmentation fault in PARDISO phase 33 when changing parameters in iparm

$
0
0

Hello,

we are currently integrating PARDISO into our software and stumbled upon some (from our point of view) weird behaviour.

First the setting:

Given a sparse matrix of type -2 we start with phase 12, so reordering and symbolic factorization. After that we wanted to use phase 33 with a sparse right hand side and thus set iparm[30] = 1.

In the documentation it says that for using iparm[23] = 1 (what we wanted to do), we should

Disable iparm[10] (scaling) and iparm[12] = 1 (matching) when using the two-level factorization algorithm. Otherwise Intel MKL PARDISO uses the classic factorization algorithm.

First of all, we are not quite sure what that is supposed to mean: Does it say set iparm[10] and iparm[12] both to zero? Or does it say set iparm[10] = 0 and iparm[12] = 1?
Ok, so, nevertheless, we set both to one and in addition set iparm[23] = 1, because we didn't quite read the hint at that time and anyway, we expected that this would lead to a behaviour similar to iparm[23] = 0.
The reason for setting iparm[10] and iparm[12] in the first place was that, indeed, our matrices come from a interior point method.

Now the weird part.
During phase 12 we did not set iparm[30] (since pardisoinit did not and we did not hand over a right hand side at that point - also, the documentation says iparm[30]

controls the solve step of Intel MKL PARDISO.

For phase 33 we then set iparm[30] = 1 and got a segfault back from pardiso.
Now, we did find two ways to get rid of the segfault neither of which seem to make any sense:
a) when setting iparm[30] = 1 for phase 12 and 33 the segfault disappears
b) setting iparm[23] = 0 or iparm[23] = 10 during solution phase lets the segfault disappear too

Frankly we are not quite sure what is going on here, I assume we misunderstood something.

Another thing we saw happening: during phase 12 PARDISO sets paramter iparm[33] = -1. Iparm[33] is described as an input parameter and thus should not be set by PARDISO? Or does this indicate some kind of error?

 

We hope you can help us.

With best regards,

Nils

 

PS:
I attached the example we were using, it is a modified version of the pardiso_sym_c.c example. Compiler command is on the top of the file in some comment. You can also find the complete setting of iparm we were using during phase 12 and the on we were using during phase 33 (iparm2).

AttachmentSize
Downloadtext/x-csrcpardiso_sym_c.c79.6 KB

Viewing all articles
Browse latest Browse all 2652

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>