Giter Club home page Giter Club logo

itensortdvp.jl's Introduction

ITensorTDVP

Stable Dev Build Status Coverage Code Style: Blue

Installation

To install this package, you can use the following steps:

$ julia

julia> ]

pkg> add ITensorTDVP

News

ITensorTDVP.jl v0.2 Release Notes

Breaking changes

  • The applyexp Krylov exponentiation solver backend has been removed, and solver_backend="applyexp" option for tdvp now just calls exponentiate from KrylovKit.jl. They were in many ways the same but exponentiate has more advanced features like restarts. Using solver_backend="applyexp" now prints a warning to that effect. To remove the warning, don't specify the solver_backend keyword argument. Alternatively, you can set it to "exponentiate", though specifying it is now superfluous since there is now only one solver_backend available and the solver_backend keyword argument may be removed in future minor releases.

Bug fixes

  • svd_alg now doesn't specify a default value, so the default value is set by the svd function in ITensors/NDTensors. This fixes an issue using ITensorTDVP.jl and GPU backends, where the default value being set in ITensorTDVP.jl wasn't compatible with the options available in some GPU backends like CUDA.
  • More generally, keyword arguments are handled better throughout the package, so default values are handled more systematically and keyword arguments are listed or forwarded more explicitly, so it should catch more mistakes like passing an incorrect keyword argument name.

About

This package is effectively a generalization of the DMRG code in ITensors.jl, using the MPS/MPO types from that package. It provides a general MPS "solver" interface which allows us to implement a variety of MPS/MPO optimization/solver functionality like DMRG (ITensorTDVP.dmrg), TDVP (ITensorTDVP.tdvp), linear solving (ITensorTDVP.linsolve/KrylovKit.linsolve), DMRG-X (ITensorTDVP.dmrg_x), etc. while sharing most of the code across those different functions. Therefore, it effectively supercedes the DMRG functionality in ITensors.jl (dmrg), and provides its own ITensorTDVP.dmrg function that is essentially the same as the dmrg function from ITensors.jl (though for now it only outputs the state, while ITensors.dmrg outputs the energy and the state, likely we will make the interface more similar to ITensors.dmrg in future versions of the code). This package is fairly stable and appropriate for general use. The primary missing feature is a lack of modern subspace expansion tools for methods like TDVP and 1-site DMRG. However, 2-site TDVP or TEBD is often sufficient for performing subspace expansion (except when it's not).

However, note that future developments, including modern subspace expansion tools, are being developed in our next-generation tensor network library ITensorNetworks.jl. The goal of that package is to provide contraction, optimization, and evolution tools for general tensor networks, as well as methods like DMRG, TDVP, and linear solving for tree tensor networks, and the eventual goal is to replace this package which is limited to solvers for just MPS/MPO (linear/path graph) tensor networks. However, ITensorNetworks.jl is under heavy development and is not meant for general usage at the moment, except for those who are brave enough to handle missing features and breaking interfaces. Basically, for the average user who wants stable and reliable code, if you need to use MPS-based TDVP or linear solving, you should use this package for the time being.

itensortdvp.jl's People

Contributors

a-quelle avatar b-kloss avatar emstoudenmire avatar github-actions[bot] avatar kbidzhiev avatar liangdonghu avatar mtfishman avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.