Turn off UMPACK's iterative refinement when called from Arpack
Perhaps someone can enlighten us on this ?
https://stackoverflow.com/questions/25065649/arpack-sparse-eigen-solver-many-times-slower-than-equivalent-matlab-eigs
It also aligns with my experience when using Arpack.eigs in Julia vs eigs in matlab
Somebody said (perhaps in Slack or somewhere in the issues here), that MATLAB dropped its dependency on Arpack and has its own eigs.
So there is no way to get the same performance to get Julia near the same performance of MATLAB?
This seems to be a bit surprising to me since MATLAB isn't really using a very secret magic algorithm; with the debugging mode one can just enter its code, so I'm trying to understand why Julia (or other languages) aren't able to be on par with its performance. There seems to be a slight difference in default parameters: MATLAB's tolerance seems two orders looser than the one of Arpack, and the starting vector is random instead of zeros. But even changing these parameters in Julia doesn't seem to lead to significant speedup.
In my experience with solving generalized eigenvalue problems with positive definite matrices, Arpack.eigs usually is faster than in Matlab, in some cases 2x. In my case I had to set accordingly the explicittransform=:auto parameter which is not yet in the documentation AFAIT. I managed to see it by using the Julia help command
In my experience with solving generalized eigenvalue problems with positive definite matrices, Arpack.eigs usually is faster than in Matlab, in some cases 2x. In my case I had to set accordingly the
explicittransform=:autoparameter which is not yet in the documentation AFAIT. I managed to see it by using the Julia help command
Thanks for your answer. I can't retrieve the precise matrix anymore, but I remember that it was a complex, non-hermitian one (standard, non-generalized EV); and I was looking for the smallest EV's in real or imaginary part rather than the largest.
I suppose that if matlab is no longer using Arpack, then performance issues may be best filed against other packages that people generally prefer to use nowadays (discussed in various issues in this repo).
We should probably document the native Julia packages in the README.md here should people coming to Arpack.jl want to try out those packages.
KrylovKit.jl and ArnoldiMethod.jl have been suggested in https://github.com/JuliaLinearAlgebra/Arpack.jl/issues/87
As reported in this Discourse post, the time for a standard eigenproblem using Arpack.eigs can be reduced to within 1.2x the time required by Matlab's eigs function by setting SuiteSparse.UMFPACK.umf_ctrl[8] = 0
Turning off UMFPACK's iterative refinement should probably be the default when using Arpack.
@rayegun I believe we have turned off UMFPACK's iterative refinement by default for a while now. Can you confirm?