[Numpy-discussion] Eigenvalues did not converge

2,525 views
Skip to first unread message

Rick Muller

unread,
Aug 29, 2011, 10:56:31 AM8/29/11
to Discussion of Numerical Python
I'm bumping into the old "Eigenvalues did not converge" error using numpy.linalg.eigh() on several different linux builds of numpy (1.4.1). The matrix is 166x166. I can compute the eigenvalues on a Macintosh build of numpy, and I can confirm that there aren't degenerate eigenvalues, and that the matrix appears to be negative definite.

I've seen this before (though not for several years), and what I normally do is to build lapack with -O0. This trick did not work in the current instance. Does anyone have any tricks to getting eigh to work?

Other weird things that I've noticed about this case: I can compute the eigenvalues using eigvals and eigvalsh, and can compute the eigenvals/vecs using eig(). The matrix is real symmetric, and I've tested that it's symmetric enough by forcibly symmetrizing it.

Thanks in advance for any help you can offer.

--
Rick Muller
rpmu...@gmail.com
505-750-7557

Charanpal Dhanjal

unread,
Aug 29, 2011, 11:21:05 AM8/29/11
to numpy-di...@scipy.org
I posted a similar question about the non-convergence of
numpy.linalg.svd a few weeks ago. I'm not sure I can help but I wonder
if you compiled numpy with ATLAS/MKL support (try numpy.show_config())
and whether it made a difference? Also what is the condition number and
Frobenius norm of the matrix in question?

Charanpal

On Mon, 29 Aug 2011 08:56:31 -0600, Rick Muller wrote:
> Im bumping into the old "Eigenvalues did not converge" error using


> numpy.linalg.eigh() on several different linux builds of numpy
> (1.4.1). The matrix is 166x166. I can compute the eigenvalues on a

> Macintosh build of numpy, and I can confirm that there arent


> degenerate eigenvalues, and that the matrix appears to be negative
> definite.
>

> Ive seen this before (though not for several years), and what I


> normally do is to build lapack with -O0. This trick did not work in
> the current instance. Does anyone have any tricks to getting eigh to
> work?
>

> Other weird things that Ive noticed about this case: I can compute


> the eigenvalues using eigvals and eigvalsh, and can compute the

> eigenvals/vecs using eig(). The matrix is real symmetric, and Ive
> tested that its symmetric enough by forcibly symmetrizing it.


>
> Thanks in advance for any help you can offer.

_______________________________________________
NumPy-Discussion mailing list
NumPy-Di...@scipy.org
http://mail.scipy.org/mailman/listinfo/numpy-discussion

Paul Anton Letnes

unread,
Aug 29, 2011, 11:31:09 AM8/29/11
to Discussion of Numerical Python
I recently got into trouble with these calculations (although I used scipy). I actually got segfaults and "bus errors". The solution for me was to not link against ATLAS, but rather link against Apple's blas/lapack libraries. That got everything working again. I would suggest trying to install against something other than ATLAS and see if that helps (or, more generally, determining which blas/lapack you are linking against, and try something else).

Paul

Rick Muller

unread,
Sep 1, 2011, 2:20:46 PM9/1/11
to Discussion of Numerical Python
Yes, as I pointed out, the problem does run on the Macintosh systems. But I'd like to be able to run these on our linux supercomputers. Surely this is possible, right?

Charanpal Dhanjal

unread,
Sep 1, 2011, 3:10:17 PM9/1/11
to Discussion of Numerical Python
As Paul suggested I'd try compiling numpy with something other than the
BLAS/LAPACK libraries currently in use. Here is a good place to start:
http://www.scipy.org/Installing_SciPy/Linux.

Charanpal

On Thu, 1 Sep 2011 12:20:46 -0600, Rick Muller wrote:
> Yes, as I pointed out, the problem does run on the Macintosh systems.

> But Id like to be able to run these on our linux supercomputers.


> Surely this is possible, right?
>

> On Mon, Aug 29, 2011 at 9:31 AM, Paul Anton Letnes wrote:
>
>> I recently got into trouble with these calculations (although I used
>> scipy). I actually got segfaults and "bus errors". The solution for

>> me was to not link against ATLAS, but rather link against Apples


>> blas/lapack libraries. That got everything working again. I would
>> suggest trying to install against something other than ATLAS and see
>> if that helps (or, more generally, determining which blas/lapack you
>> are linking against, and try something else).
>>
>> Paul
>>
>> On 29. aug. 2011, at 16.21, Charanpal Dhanjal wrote:
>>
>> > I posted a similar question about the non-convergence of

>> > numpy.linalg.svd a few weeks ago. Im not sure I can help but I

>> > NumPy-Di...@scipy.org [1]
>> > http://mail.scipy.org/mailman/listinfo/numpy-discussion [2]
>>
>> _______________________________________________
>> NumPy-Discussion mailing list
>> NumPy-Di...@scipy.org [3]
>> http://mail.scipy.org/mailman/listinfo/numpy-discussion [4]
>
> --
> Rick Muller
> rpmu...@gmail.com [6]
> 505-750-7557
>
>
>
> Links:
> ------
> [1] mailto:NumPy-Di...@scipy.org
> [2] http://mail.scipy.org/mailman/listinfo/numpy-discussion
> [3] mailto:NumPy-Di...@scipy.org
> [4] http://mail.scipy.org/mailman/listinfo/numpy-discussion
> [5] mailto:paul.ant...@gmail.com
> [6] mailto:rpmu...@gmail.com

Paul Anton Letnes

unread,
Sep 4, 2011, 10:17:07 AM9/4/11
to Discussion of Numerical Python
I'm not sure if I got my point across. My point was that the ATLAS installation that numpy linked against was broken on Mac OS X but not on Linux (afaik). Hence, your code may run better on your supercomputer. So, try linking against a different BLAS/LAPACK implementation, and, with some luck, your problem could potentially disappear.

ymmv,
Paul.
Reply all
Reply to author
Forward
0 new messages