How to solve the larger order eigenproblem

I want to solve a generalized symmetric eigenproblem A(N,N)x(N,N) = v(N)B(N,N)x(N,N), N > 500

I try a call in Lapack (see http://www.netlib.org/lapack/double/dsygvd.f)

DSYGVD(1,'V','U',N,A,N,B,N,V,WORK,1+6*N+2*N**2,IWO RK,3+5*N,INFO)

define: WORK(1+6*N+2*N**2), IWORK(3+5*N)

when N<100, I can solve the equation successfully.

When N>200, 300, or more, the program will fail with stack overflow.

I try the linux system with large memory (>8GB), and still fail

I guess that 1+6*N+2*N**2 is too large.

How can I solve this problem?

Best regards.

sandf

Re: How to solve the larger order eigenproblem

Hey sandf.

If you are getting a stack overflow then it means a lot of your data is being stored on the stack instead of the heap.

In order to use the heap you would either have to create a virtual stack on the heap or just use the heap instead.

This requires doing some re-coding of the LAPACK procedure so if you really want to do this, you need to get the source code and make the changes which will probably take you a little while.

Re: How to solve the larger order eigenproblem

Dear chiro,

Thanks for your help.

Bests

sandf