I want to solve some really large eigenproblems (symmetric matrices with N ~ 8000) for principal component regression. I had thought that DSYEVR would be the most suitable function for that, because one can specify the range of the components to calculate (index range or eigenvalue range).
But I was totally surprised that computing only a small number of eigenpairs (even just the single, most dominant one) takes about as long as computing all of them, and takes about as long as using DSYEV (DSYEVD is a little bit slower, which I find surprising, too). Having read some papers with experimental results on this, I'd have expected a very significant performance difference. I have run DSYEVR on several matrices (random ones, Hilbert, etc.), but there does not seem to be any significant difference in performance. The returned values are always exactly as expected so I don't think I'm applying the function in wrong ways. Does anybody have a guess what else I could be doing wrong here? Or is this normal? (I use Linux/i686 on Fedora Core 3 with lapack-3.0-28).
Btw., I have a feature request for this function: right now one can only specify either the range of indexes of the eigenpairs to compute, or the range of the eigenvalues. But allowing both ranges would also make sense, e.g. if one wants to compute at most a certain number of the most dominant eigenvalues down to a lower limit.