Algorithm for truncated SVD and eigendecomposition

Hi,
I read the code in NDTensors/src/linealgebra and it seems that the default ways to truncate or factorize an ITensor use the LinearAlgebra.eigen or use “qr_iteration”/“recursive”/“divide_and_conquer” algorithm written by the authors, where the full spectrum is obtained and then the unwanted eigenvalues/singular values are discarded. I wonder if ITensor supports directly obtaining several largest/smallest eigenvalues/singular using, e.g. KrylovKit.jl or RandomizedSVD.
Besides, will this be stable and faster for computation used in DMRG (e.g. when factorizing the two-site tensors)?

Glad you are reading through the code. ITensor doesn’t currently offer randomized SVD (RSVD) as a backend for our factorize or svd functions, but it would be a sensible thing to offer. It could definitely lead to better performance in algorithms that are either dominated by factorizations or which have a large sub-leading part that involves factorizations. Also RSVD might have better performance on GPU. So it’s something we want to add. I’m less sure about the KrylovKit based SVD backend, but we could certainly wrap it and try it out.

This topic was automatically closed 10 days after the last reply. New replies are no longer allowed.