- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
First of all, we'd like to notice that info=-202 has nothing to do with the diagnostics. info=202 means an internal algorithmic failure. So the error message
"DSTEGR2 parameter number -202 had an illegal value" is a misleading one and it should be replaced with more informative message. Certainly we will work to improve error messages in the future. PDSYEVR returns M=0 in this case because the DSTEGR2 returned the error code, PDSYEVR exited without computing the eigenvectors.
The MRRR pdsyevr eigensolver has been using LDLT factorization of tridiagonal matrix (T - sigma I) to separate an eigenvalue from already computed eigenvalues with the help of very small shifts. And info=202 means that it failed to compute an approximation to eigenvalue with prescribed accuracy withing preset 6 possible shifts (there is an internal parameter MAXTRY in the ScaLAPACK dlarre2 routine which is set to 6) since the matrix has tightly clustered eigenvalues. It should be stressed that the algorithm is very sensitive to round-off errors and the algorithm for reduction to tridiagonal form depend on OS, Cpu type, compiler options and etc. and this explains different results for np=1, np=2 and np=4. We've not able to reproduce the failure so far and taking into account out-of-order executions, chances to run into the same failure are pretty low. We can increase the value of the internal parameter MAXTRY as the authors of the MRRR algorithm recommend in these cases but there is no guarantee it will help.
We'd like to recommend using ScaLAPACK PDSYEV or PDSYEVX for matrices with tightly clustered eigenvalues since these routines are more reliable for such cases.
Thanks
Sergey
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
First of all, we'd like to notice that info=-202 has nothing to do with the diagnostics. info=202 means an internal algorithmic failure. So the error message
"DSTEGR2 parameter number -202 had an illegal value" is a misleading one and it should be replaced with more informative message. Certainly we will work to improve error messages in the future. PDSYEVR returns M=0 in this case because the DSTEGR2 returned the error code, PDSYEVR exited without computing the eigenvectors.
The MRRR pdsyevr eigensolver has been using LDLT factorization of tridiagonal matrix (T - sigma I) to separate an eigenvalue from already computed eigenvalues with the help of very small shifts. And info=202 means that it failed to compute an approximation to eigenvalue with prescribed accuracy withing preset 6 possible shifts (there is an internal parameter MAXTRY in the ScaLAPACK dlarre2 routine which is set to 6) since the matrix has tightly clustered eigenvalues. It should be stressed that the algorithm is very sensitive to round-off errors and the algorithm for reduction to tridiagonal form depend on OS, Cpu type, compiler options and etc. and this explains different results for np=1, np=2 and np=4. We've not able to reproduce the failure so far and taking into account out-of-order executions, chances to run into the same failure are pretty low. We can increase the value of the internal parameter MAXTRY as the authors of the MRRR algorithm recommend in these cases but there is no guarantee it will help.
We'd like to recommend using ScaLAPACK PDSYEV or PDSYEVX for matrices with tightly clustered eigenvalues since these routines are more reliable for such cases.
Thanks
Sergey
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
This certainly looks suspicious, especially since the behaviour is deterministic on a 1×1 BLACS grid while the same inputs work correctly with multiple MPI ranks. The combination of INFO = 0, correct eigenvalues, and M = 0 is particularly concerning because downstream code has no reliable way to detect that something went wrong. Returning a successful status while reporting zero eigenpairs for RANGE="A" seems inconsistent with the documented interface. The -202 diagnostic also suggests the issue is arising within the internal MRRR path rather than from the public API arguments. Thanks for providing such a thorough reproducer having both the minimal case and environment details should make this much easier to investigate.
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page