Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Subspace expansion #23

Open
wants to merge 24 commits into
base: main
Choose a base branch
from
Open

Subspace expansion #23

wants to merge 24 commits into from

Conversation

b-kloss
Copy link
Collaborator

@b-kloss b-kloss commented Apr 27, 2022

This adds subspace expansion for dynamical adaptation of bond-dimension in 1-site TDVP algorithm. The subspace expansion scheme is similar to an expansion for uniform MPS as used within the VUMPS algorithm, see https://doi.org/10.48550/arXiv.1701.07035.

Currently, the subspace expansion is performed once before for every timestep (of a certain order, not per half-sweep).

parameters for the subspace expansion include:
atol - the tolerance for determining the nullspace of a site-tensor
cutoff - the cutoff for singular values of the gradient
cutoff_compress - SVD cutoff in initial two-site tensor SVD in subspace expansion (allows for redistributing bond-dimension between different QN sectors even after the maximum bond-dimension is reached, but introduces truncation error into 1-site TDVP)

Issues:

  • The subspace expansion doesn't work for non-QN ITensors (a fix would be to add a dummy QN, but this is not currently done.)
  • The subspace expansion fails for product states with QN ITensors (by design). A workaround is one or a few steps of two-site TDVP initially to grow the bond-dimension away from 1.
  • cutoff in subspace expansion for 1-site TDVP is not easily related to cutoff in two-site TDVP (even after rescaling with timestep). To get similar bond-dimension increase, we need to choose many orders of magnitude larger cutoff for the subspace expansion (see test).
  • The formal scaling of this implementation of the subspace expansion is that of 2-site TDVP. A direct solution can be implemented, with scaling identical to 1-site TDVP. This implementation was started (src/subspace_expansion_krylov.jl), but is not functional yet.

In the future we may want to include more control over when to perform subspace expansion (for example performing it only if there is less than a certain number of singular values below a threshold, in order to reduce the computation effort).

src/tdvp_step.jl Outdated Show resolved Hide resolved
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
@mtfishman
Copy link
Member

@b-kloss ITensor/ITensors.jl#929 is merged and registered in ITensors 0.3.16 so you can remove the nullspace implementation from this PR and set the compat entry of ITensors to 0.3.16 here:

ITensors = "0.3.3"
.

src/ITensorTDVP.jl Outdated Show resolved Hide resolved
src/subspace_expansion.jl Outdated Show resolved Hide resolved
src/subspace_expansion.jl Outdated Show resolved Hide resolved
src/tdvp_step.jl Outdated Show resolved Hide resolved
@mtfishman
Copy link
Member

@b-kloss we've decided to move the functionality in this repository to https://github.com/mtfishman/ITensorNetworks.jl, please move this PR over there if you plan to continue working on this.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants