I am encountering a problem with the svd solver of the KylovKit.jl package. I am trying to compute the SVD of a 90000X90000 sparse matrix, with a fraction of 2.4E-4 elements non-zero. However, the following execution
does not terminate (it has been more than 48 hours). I am looking only for the top SVD, and my tolerance is also very high. The matrix K is close to the identity and its top singular value is 1.
Could suggest any reason why this relatively simple svd application is not working. Is there any known bug ?
Another curious thing is that my computer has 4 processors, but only one of them is being used during the operation.
The sparse matrix K is created from a complicated process involving the computation of a Gaussian kernel over a data-set. So i have not provided those details.
The svd solver is probably the least tested. That being said, I notice you have krylovdim=3. Is there any reason for choosing it so so small? You can get more info about the convergence by using the verbosity keyword
I was under the impression that it is sufficient for the krylov dimension needs to be 2L+1, where L is the number of singular values/vectors required.
I will try out with the verbosity command.
Can you suggest any other tried and tested package. I had earlier reported a problem / bug with the svds() routine here, to which you had suggested KrylovKit.jl
Thank you for the suggestion. I looked up the documentation here. I am having travel in deciphering the output. I tried the routine on a simple identity amtrix of size 4.
A = Diagonal(ones(4));
X,L = IterativeSolvers.svdl(A,nsv=3,vecs="both");
The problem is that I do not know how the SVD results are stored in X,L. Upon checking, I find
I do not see 3 singular values equal to one. Where can I recover the left and right singular vectors from ? The documentation does not indicate that.
In other programs such as Matlab, the documentation clearly provides this basic information. Usually people are interested in both the singular vectors and values.