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

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

Ulrich_H_
Beginner
1,216 Views

Hi,

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.

Regards

Dr. Guenter Kaufels, InfoGraph GmbH, Aachen, Germany

 

0 Kudos
18 Replies
Gennady_F_Intel
Moderator
1,216 Views

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

0 Kudos
Ulrich_H_
Beginner
1,216 Views

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

 

 

0 Kudos
Gennady_F_Intel
Moderator
1,216 Views

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

0 Kudos
Gennady_F_Intel
Moderator
1,216 Views

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

0 Kudos
Ulrich_H_
Beginner
1,216 Views

Hi Gennady!

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

Regards, Guenter

 

0 Kudos
Ulrich_H_
Beginner
1,216 Views

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

 

0 Kudos
Gennady_F_Intel
Moderator
1,216 Views

Hello Guenter,

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

_control87(EM_DENORMAL | EM_UNDERFLOW | EM_INEXACT | EM_INVALID, MCW_EM); 

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

 

 

 

0 Kudos
Ulrich_H_
Beginner
1,216 Views

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

 

0 Kudos
Gennady_F_Intel
Moderator
1,216 Views

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.

0 Kudos
Alexander_K_Intel2
1,216 Views

Hi All,

I will check the code and will back few hours later

Thanks,

Alex

0 Kudos
Alexander_K_Intel2
1,216 Views

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

Thanks,

Alex

 

0 Kudos
Ulrich_H_
Beginner
1,216 Views

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

 

0 Kudos
Ulrich_H_
Beginner
1,216 Views

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

 

 

0 Kudos
Ulrich_H_
Beginner
1,216 Views

 

0 Kudos
Ulrich_H_
Beginner
1,216 Views

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

 

0 Kudos
Gennady_F_Intel
Moderator
1,216 Views

Guenter, please try version 2018 update 3

0 Kudos
Ulrich_H_
Beginner
1,216 Views

Hello Gennady!

Thank you for your hint.

With Intel MKL 2018 Update 3 our problems described above are resolved.

Many thanks !!

Best regards, Guenter

 

0 Kudos
Gennady_F_Intel
Moderator
1,216 Views

thanks for update, Guenter.

0 Kudos
Reply