MKL PARDISO: floating-point error with zero pivots ...

MKL PARDISO: floating-point error with zero pivots ...


we have detected problems with the current version of the PARDISO solver.

(MKL vers. 2017.4.210, Windows x64 architecture, static linking, Microsoft VS 2015).

PARDISO produces a floating-point error in phase 22, if the coefficient matrix of a FEM analysis has zero pivots.

Another problem is, that PARDISO doesn’t return the correct line number of the first pivot element (iparm[29]).

In former versions PARDISO worked well in this regard.

I have attached some screen shots and a code sample to demonstrate the above problems.

Thank you for your answer.


Dr. Guenter Kaufels, InfoGraph GmbH, Aachen, Germany


Downloadapplication/pdf Attachment.pdf2.17 MB
16 posts / 0 new
Last post
For more complete information about compiler optimizations, see our Optimization Notice.

Hi Guenter!  

Thanks for report. Actually, this is not MKL ver. 2017.4.210 but this is MKL 2017 u3 ( pls check the mkl_version.h).  
But nevertheless, at the first glance, the exception could not be generated. We will investigate the case. 
1.    On my side, I see exception is generated with MKL 2017 u3 (latest) and with MKL 11.3.4 either. Win64, static linking, VS 2013, AVX2 code.
2.    Meantime, I checked the second problem you reported “iparm[29]” and see the same results with both of these versions:  

Major version:           2017
Minor version:           0
Update version:          3
Product status:          Product
Build:                   20170413
Platform:                Intel(R) 64 architecture
Processor optimization:  Intel(R) Advanced Vector Extensions 2 (Intel(R) AVX2) enabled processors

ERROR during the triangulation of the system: -4
Line No. 9


Major version:           11
Minor version:           3
Update version:          4
Product status:          Product
Build:                   20160823
Platform:                Intel(R) 64 architecture
Processor optimization:  Intel(R) Advanced Vector Extensions 2 (Intel(R) AVX2) enabled processors

ERROR during the triangulation of the system: -4
Line No. 9

Hi Gennady!

Thank's for your quick response!

You are right, the MKL version that we use is 2017 update 3:

#define __INTEL_MKL_BUILD_DATE 20170413

#define __INTEL_MKL__ 2017

#define __INTEL_MKL_MINOR__ 0

#define __INTEL_MKL_UPDATE__ 3

#define INTEL_MKL_VERSION 20170003

The problem with the reported line numbers from “iparm[29]” seems to be a little bit complicated.

I have tested the behaviour and I found that it depends from the number of threads.

In the attachment you find a new test code with a matrix that returns the correct line number 30 for num_threads=1.

For num_threads=2  PARDISO returns the incorrect line number 1.

I hope, that you can now check the problem.

Nice weekend and best regards,  Guenter




Downloadtext/x-c++src PardisoTest.cpp10 KB

Hi Guenter,

Yes, i reproduced the similar behavior with the latest update 3 too on my side. The issue will be escalated and we will keep you informed with any updates. Thanks again for the case.

with regards

and it seems this is some sort of regression issue, because of MKL 11.3.4 returns the identical results.

Hi Gennady!

Thank you for dealing with the problem so quickly.
I'm looking forward to your solution of the problem.

Regards, Guenter


Hi Gennady!

Have you already made changes to the Mkl Pardiso Solver that affect our problem.

I have installed Mkl-Version 2018.0.124 .

In another form, the problem still exists.
Only with num threads = 1 the program works correctly.

Best regards, Guenter


Hello Guenter,

here is the output I see on my side with the latest MKL 2018, win64, static linking and with FP control:


num-threads = 4
Major version:           2018
Minor version:           0
Update version:          0
Product status:          Product
Build:                   20170720
Platform:                Intel(R) 64 architecture
Processor optimization:  Intel(R) Advanced Vector Extensions 2 (Intel(R) AVX2) enabled processors

ERROR during the triangulation of the system: -4

Line No. 30

regards, Gennady




Hello Gennady!

Thank you for your quick answer.

You're right, the former example now works correctly.

But the problem still does not seem to be fully resolved.

In the attachment you find a new bigger example, which still  reports the wrong line No. 1 for the zero pivot (num threads > 1).

The rest of the program is unchanged.

If you run it with only 1 thread, it works well and reports the correct line No. 995.

Best regards, Guenter



Downloadtext/x-c++src PardisoTest2.cpp117.89 KB

yes, unfortunately, you right. (-. I am sorry for that. I see the same issue still exists. 

num-threads = 4

ERROR during the triangulation of the system: -4

Line No. 1        < ---------------------------------------  wrong number of line .... ( 995 is an expected line)

we will check with owner of this solver and will keep you inform.

Hi All,

I will check the code and will back few hours later



I see that this matrix has at least 2 zero or negative eigenvalue and in documentation there is following note 

Note: The returned value can be different for the parallel and sequential version in case of several zero/negative pivots.

that mean that number of pivot can be different in case of changing number of threads




Hi Alex,

thank you for dealing with our problem. You're right, the matrix has exact 6 pivots.

I agree that the reported line number may differ. But for this example it must be between 995 and 1002.

Line No. 1 is definitely wrong.

Regards, Guenter


Hello Alex!

I have a correction:

      The above matrix has exactly 12 possible zero pivots. The reported line number must be in the range of 990 to 1002 (1 based).

The DOF of line 1 is fixed and has no zero pivot.

I can imagine only 2 reasons for the problem:

either the number 1 is the default return value if your program throws an exception.

or the reported line number refers not to the original line ordering of the matrix.

regards, Guenter




Hello Gennady!

Unfortunately, our problem described above was not resolved with MKL Update 2 (2018).
As before, "iparm [29]" for num threads >1 returns the line no. 1 in combination with zero pivots.

Please test again my above example 'PardisoTest2.cpp' with your latest MKL version.

Do we have a chance that our problems with MKL will be resolved in the foreseeable future?

We have been waiting already for almost 10 months. Only MKL version 2015 works well !

Thank's and regards, Guenter


Leave a Comment

Please sign in to add a comment. Not a member? Join today