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

inner system solver SPARSE FEAST

Pilkyung_Moon
Beginner
466 Views

Dear MKL developers,

I am trying to use FEAST eigenvalue solver with CSR formatted matrix, but encountered unexpected error (info = -2).

Both the Table 10 in the FEAST manual (http://arxiv.org/pdf/1203.4031v3.pdf) and MKL manual (https://software.intel.com/en-us/node/521739#GUID-E1DB444D-B362-4DBF-A1DF-DA68F7FB7019) said that this happend because "Internal error of the inner system solver. Possible reasons: not enough memory for inner linear system solver or inconsistent input.".

Could you please provide me comments or advices to fix this problem? The icc version is 15.0.3 and MKL version is 11.2, 64-bit system. I attached the sample code with three different CSR matrices. You can choose the matrix (small, medium, large) by commenting in/out the parts at lines 26-46.

Each CSR file contains Hermitian matrix,
1. 'n': dimension of the matrix
2. 'ia': rows, n+1 elements
3. 'n_val': # of non-zero elements
4. 'ja': columns, n_val elements
5. 'val': values, n_val elements

When I choose 'Small' matrix, I could get proper eigenvalues. But, when I choose 'Medium' matrix, it gives info = -2 and unrealistic 'm' (# of eigenvalues obtained). And for the 'Large' matrix, I got a segmentation fault.

When I ran the code with much simpler sample matrices, it worked fine even with very large matrices.

Thank you in advance,

Pilkyung

0 Kudos
8 Replies
Irina_S_Intel
Employee
466 Views

Dear Pilkyung,

At a first glance, I see that your matrix is not Hermitian, that may cause the problem. Please make sure that all your matrices are Hermitian (or Symmetric in case of real matrices). Extended Eigensolver works only with problems with real spectrum, thus matrices A and B must be Hermitian, matrix B positive definite.

Best regards,

Irina

0 Kudos
Pilkyung_Moon
Beginner
466 Views

Dear Irina,

Thank you for your response. I checked the three matrices, but they are almost (within an error of 1e-14) Hermitian. So, in principle, FEAST should have worked for them. Could you please provide comments or advices to fix this?

Best regards,

Pilkyung

0 Kudos
Irina_S_Intel
Employee
466 Views

Dear Pilkyung,

You're right, the matrix you're working with is indeed Hermitian, but what confused me in the first time is that its portrait (arrays ia and ja) is not of symmetric matrix. The reason is that you have zero values stored in val array. This causes all troubles, since csr format must store only nonzero values.

Best regards,

Irina

 

0 Kudos
Pilkyung_Moon
Beginner
466 Views

Thank you, Irina!

The zero values in CSR format caused that error. (I added these zero values to avoid missing of row/col (with entire values equal to zero) when converting [i,j,v] format to CSR format,)

After I removed all zero values, FEAST worked fine.

BTW, I am checking whether the value of 'info' equals 3 (which means "m0 is too small"), and trying to adjust the m0 value (estimated # of eigenvalues) in the next iteration. But it seems that m0 is corrupted at some (not every) run of zfeast_hcsrev(). Is this usual or did I make any mistake?

Best regards,

Pilkyung

0 Kudos
Irina_S_Intel
Employee
466 Views

Dear Pilkyung,

Glad to help!

Corrupted m0 is unexpected behavior. Can you please provide a reproducer of this issue?

Best regards,

Irina

0 Kudos
Pilkyung_Moon
Beginner
466 Views

Dear Irina,

Thank you for your prompt response.

Here I attach the source code and log. The code divides the eigenvalue range into several domains and solve at each domain. And if the initial guess of m0 is too small, re-run the code with a larger m0.

As you can see at the lines #5, #25, it seems that m0 is corrupted at some iterations.

Best regards,

Pilkyung

0 Kudos
Irina_S_Intel
Employee
466 Views

Dear Pilkyung,

Thank you for your reproducer. I can also see this behavior, m0 can decrease with Extended Eigesolver's iterations as the size of the subspace decreases and that is not described in documentation. We will investigate this issue.

Best regards,

Irina

0 Kudos
Gennady_F_Intel
Moderator
466 Views

Pilkyung, "corrupted m0 is unexpected behavior" ....  this problem has been fixed into the latest MKL 2017 update 1. Could you please check how it will work on your side and let us know the results. regards, MKL team

0 Kudos
Reply