Open TysonRayJones opened 5 years ago
Is there any doc on tuning Lanczos in ViennaCL I could grab a quick link to? Otherwise I'll need to switch to another library :(
@TysonRayJones Unfortunately there is no good documentation on Lanczos in ViennaCL. This is contributed code, so I don't know all the implementation details. Sorry!
I'm encoding an n-by-n Hermitian matrix
into a 2n-by-2n ViennaCL matrix
which mathematically, should have the same (though each twice-degenerate) real eigenvalues.
I'm having trouble tuning Lanczos method to accurately compute these eigenvalues, using my Quadro P6000 (compute capability 6.1).
E.g. this 4-by-4 Hermitian matrix (in Mathematica):
with eigenvalues
{-0.835489, 0.0414574, 0.671312, 2.03686}
, becomes this ViennaCL matrix:which I attempt to eigendecompose with
The eigenvalues reported by ViennaCL not only vary drastically in accuracy based on the parameters to
ltag
(which I'm unsure how to optimise), but vary between runs with the same parameters! Here are some outputs without changing the code:As you can tell just by comparing the degenerate pairs of eigenvalues, run 1 is inaccurate, run 2 is wildly inaccurate, and run 3 is excellent.
I need to configure
ltag
so that, no matter the runtime, the eigenvalues are computed very accurately every time. My end-goal is to accurately compute the sum of the absolute value of all the eigenvalues of Hermitian matrices as large as ~30k-by-30k!Is there any elaboration on the parameters only briefly mentioned here, and how they impact the runtime and final precision?