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

MKL DSS Solver errors

ljp
Beginner
1,304 Views

Intel Fortran & MKL version compilers_and_libraries_2018.5.274

I have built a routine based on the sample code dss_sym_f90.f90 to solve large FE matrices. My routine works with the supplied matrix but fails with my own.

DSS_CREATE, DSS_STRUCTURE and DSS_REORDER all return error=0 but DSS_FACTOR_REAL returns error -13 (which is MKL_DSS_TERM_LVL_ERR) but I cannot find any explanation of what this error means. Is there any way of extracting more information about what is causing the error?

If I call DSS_CREATE with opt set explicitly to the default value:

opt=MKL_DSS_MSG_LVL_WARNING + MKL_DSS_TERM_LVL_ERROR

I then get error -13 from DSS_CREATE.

.

0 Kudos
5 Replies
mecej4
Honored Contributor III
1,277 Views

If there are errors in the arguments passed to the DSS solver routines, it is normal and desirable to receive an error status.

Similarly, if the square matrix passed to DSS is singular, failure is to be expected.

If you provide a simple example code and data files if needed for reading in the matrix, we can look at why the failure occurred.

0 Kudos
ljp
Beginner
1,270 Views

Thanks for your reply.

Overnight I installed the latest version of the MKL library from compilers_and_libraries_2020.4.304.

This prints a more informative error:

MKL-DSS-DSS-Error, Zero pivot detected

but does not pass a code back to the calling routine to allow it to do something about it.

Is there any way of interrogating DSS to give additional information such as what the error was and which row the zero pivot occured on?

I tried setting the verbose mode with MKL_VERBOSE but that doesn't appear to give any more information.

0 Kudos
RahulV_intel
Moderator
1,253 Views

Hi,


We are forwarding your query to the MKL experts.


Thanks,

Rahul


0 Kudos
Kirill_V_Intel
Employee
1,210 Views

Hello @ljp,

First, I encourage you to abandon DSS API and switch to PARDISO API. There's only one feature which DSS has and PARDISO does not. And PARDISO is much more easier to understand since DSS API just adds a level of indirection and implicitly sets all the parameters for PARDISO and thus hides them.

And you just hit a very good reason for switching to PARDISO API when you got "mysterious" DSS errors. Btw, e.g., for "zero pivot detected" error, PARDISO API will likely return the number of zero pivots. Unfortunately, as the matrix get reordered, we don't output information as to exact places where zero pivots detected. Though you can do some clever tricks with the user-defined pivot control function, see https://software.intel.com/content/www/us/en/develop/documentation/onemkl-developer-reference-c/top/sparse-solver-routines/onemkl-pardiso-parallel-direct-sparse-solver-interface/mkl-pardiso-pivot.html

Second, as @mecej4 pointed out, it would be really much easier for us to help you if you provided a minimal reproducer. 

Best,
Kirill

0 Kudos
Khang_N_Intel
Employee
1,023 Views

Closing the ticket since there is no reply from the user for a long time.


0 Kudos
Reply