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

Help! Negative output of IPARM (18) : Number nonzeros in factors.

yanpu_z_
Beginner
735 Views

Hi,

Recently I solved a sparse non-symmetric real matrix equation with 2,785,003 unknowns,

The question is that I found Negative output of IPARM (18), which is the number of nonzeros in factors... , what's the meaning of this case?

As a result, the solution produced is wrong.

I wonder what's the problem, could anyone give me some information? Thanks a lot!

 

//---------------------------------------------- output information when callong PARDISO -------------------------------------
 Linear Solver : MKL PARDISO is starting...

 Reordering completed ...
 Number of non-zeros in  factors = [-1.206401e+009]   // This output is Negtive!
 Number of factorization MFLOPS  = [11120985]
 Factorization completed ...
 Solve completed ...

 

 

0 Kudos
7 Replies
Gennady_F_Intel
Moderator
735 Views

what version of mkl you are using?

0 Kudos
yanpu_z_
Beginner
735 Views

Hi,

Thanks for the reply!

I copy the bin libs and dlls from the installing package w_ccompxe_2013.3.171_with_MKL.exe,

which is located in my PC : C:\Program Files (x86)\Intel\Composer XE 2013\mkl\lib\intel64  (win7 64bit)

I thinks the version of MKL is 11.0.

 

0 Kudos
Gennady_F_Intel
Moderator
735 Views

Yes, this is  version 11.0 ( you can also look into mklroot\Documentation\mklsupport.txt  file and find more exact information ) . the reason i asked the version you are using is this is a known issue when the input matrix is pretty big. I 'd suggest to try ILP64 mode or evaluate the latest 11.1 update 2.

 

0 Kudos
yanpu_z_
Beginner
735 Views

(1) I download the latest MKL 11.1 and link the following libs:

..\..\Yp\YpSparseLib_Map\IntelMKL\MKL_lib_64\mkl_core.lib
..\..\Yp\YpSparseLib_Map\IntelMKL\MKL_lib_64\mkl_intel_ilp64.lib    // to use int_64 type
..\..\Yp\YpSparseLib_Map\IntelMKL\MKL_lib_64\mkl_intel_thread.lib
..\..\Yp\YpSparseLib_Map\IntelMKL\MKL_lib_64\libiomp5md.lib

There in no compilation error and no link error.

(2) I test it that  the size of MKL_int  is 8 bytes now.

(3) However, there is run error (The size of the matrix equation is much smaller than before...):

OneD, the number of Equation in the system is 136022
OneD, the number of noneZero in the system is 3434276
 Linear Solver : MKL PARDISO is starting...
 Error during symbolic factorization: -2

Press any key to continue . . .

 

(4) So I want to know if there is something I did not set properly...

Thanks very much!

0 Kudos
Roman_A_Intel
Employee
735 Views

Hi,

You can set iparm[26] = 1 (matrix checker) to be ensure that input matrix is correct. Also could you please provide us with your test code and input matrix so we can check it in our side.

Regards,

Roman

0 Kudos
yanpu_z_
Beginner
735 Views

Hi Roman,

The matrix and mesh data is of huge size, so it is not convenient to deliver to you.

(1)The only difference of mkl_intel_ilp64.lib and mkl_intel_lp64.lib lie in that:

 in the mkl_intel_ilp64.lib, integers larger than 2^31-1 can be correctly indexed, which in not the case when using mkl_intel_lp64.lib,

am i right?

(2) Yesterday I noticed another problem:

The paridiso can solve a matrix of size 3561830 correctly on my PC(win7, 64 bit, 128G memory), using mkl_intel_lp64.lib

However, for a smaller size matrix with 2,785,003 unknowns, which i formerly mentioned, it can't be solved using using mkl_intel_lp64.lib. The following message appers (I am more confused...):

 Linear Solver : MKL PARDISO is starting...

 Reordering completed ...

 Number of non-zeros in  factors = [-1.206401e+009]   // This output is Negtive!

 Number of factorization MFLOPS  = [11120985]

 

You can see the attached pictures for reference...

Thanks a lot!

Yanpu Zhao

 

 

 

 

0 Kudos
Roman_A_Intel
Employee
735 Views

Yanpu Zhao,

(1) When you use mkl_intel_ilp64.lib library all integer parameters in Pardiso should be defined as long long int or MKL_INT that was defined as long long int for ILP64 mode.

(2) Could you please set msglvl = 1 and send to us the statistical information which return by Pardiso. Also could you provide us iparm() setting and matrix type which you use.

Regards,

Roman

0 Kudos
Reply