I am working on Fermion and Boson Hubbard Models, in which the dimension of Hilbert Spaces are quite large (~50k). Because the Hamiltonian matrix is ~50k X ~50k, to diagonalize these big sparse matrices I am using DSYEV(LAPACK SUBROUTINE) which takes quite good amount of time(8hrs on Xeon Hp workstation Z400 16 GB RAM) for calculation eigenvalues as well as eigenfunctions. I am interested to reduce time to diagonalizing matrix with available processing power only; so any suggestion is welcome. Also, if I use Lanczos method, will this reduce the computation time?
1 Answer
If you are trying to calculate all 50k eigenvalues of these matrices, that is going to take you a "quite good amount of time" no matter which algorithm you choose. I'm doubtful you can do substantially better than LAPACK.
Lanczos (or generally Arnoldi) algorithms are particularly good at calculating a hand full of eigenvalues at either end of the spectrum (either lowest or highest). A robust implementation with a sophisticated shifting strategy is required to efficiently calculate a large number of eigenvalues in the spectrum without missing any.
ARPACK is generally considered a state-of-the-art Lanczos/Arnoldi eigensolver: http://www.caam.rice.edu/software/ARPACK/
From the ARPACK main web page:
"ARPACK software is capable of solving large scale symmetric, nonsymmetric, and generalized eigenproblems from significant application areas. The software is designed to compute a few (k) eigenvalues with user specified features such as those of largest real part or largest magnitude."
-
$\begingroup$ will you please share some links regarding how to use arpack... $\endgroup$– mpkCommented Oct 18, 2013 at 12:18