Skip to content

Releases: QuantumKitHub/PEPSKit.jl

v0.7.0

21 Nov 15:08
8e56798

Choose a tag to compare

PEPSKit v0.7.0

Diff since v0.6.1

We are pleased to announce the release of PEPSKit.jl v0.7.0! This release brings significant new features for time evolution, improved PEPO support, and numerous bug fixes and performance improvements.

Highlights

  • Time Evolution: Real-time and finite-temperature evolution functionality for simple update
  • Enhanced PEPO Support: Extended PEPO operations including correlators and density matrices
  • TensorKit v0.15 Compatibility: Updated compatibility with the latest TensorKit release
  • Code Quality: Migration to Runic formatter for consistent code style

New Features

Time Evolution

  • Real-time and finite-temperature evolution functionality for simple update
  • Unified interface for Trotter-based time evolution algorithms via timestep and time_evolve functions

PEPO Operations

  • Correlator for mixed state InfinitePEPO
  • Simple update for PEPO, including 3-site version
  • Single-layer and double-layer PEPO reduced density matrix
  • spacetype method for InfinitePartitionFunction

Environment Conversion

  • SUWeight to CTMRGEnv conversion (as InfinitePEPS environment)

Symmetry Support

  • Support for SU2Irrep symmetry in j1_j2_model

Breaking Changes

Interface Changes

  • Time Evolution: The old su_iter and simpleupdate functions have been replaced by the unified timestep and time_evolve interface
  • Gradient Algorithm: Default fixed-point gradient algorithm changed from the previous default to :eigsolver

Removed Features

  • InfiniteWeightPEPS and mirror_antidiag
  • Support for integer space specifiers in state and environment constructors
  • Redefinition of tensorexpr
  • Support for dual physical spaces for non-bosonic symmetries

Improvements

Algorithm Enhancements

  • BoundaryMPS methods now have their own custom transfer functions, avoiding double conjugation and fixing twist issues for fermions
  • physicalspace and related functions now correctly handle periodic indexing for infinite networks
  • Unit normalization of half and full infinite environments before projector computation, improving gradient accuracy

Code Quality

  • Migration to Runic formatter for consistent code style
  • Updated compatibility with TensorKit v0.15

Bug Fixes

Gradient and Optimization

  • Fixed sporadic test timeouts when running variational optimization after simple update for the Heisenberg model by switching to a GMRES-based gradient solver
  • Fixed maxiter behavior for fallback gradient linear solver
  • Fixed gauge fixing in :fixed mode for non-uniform unit cells from full SVD

Operator Handling

  • Rotation of iPEPO is now done correctly
  • Fixed rotl90, rotr90 and rot180 for LocalOperator
  • Fixed XXZ model convention
  • Fixed add_physical_charge for fermionic operators

Performance

  • Avoided @autoopt for partition function calculations, improving compilation times
  • Multithreaded scheduler now correctly taken into account for the reverse rules

Dependencies

Compatibility

  • TensorKit: 0.15+

Acknowledgments

Thank you to all contributors who made this release possible! Special thanks to those who submitted pull requests, reported issues, and participated in discussions.

Documentation

For detailed documentation, please visit:

Links

For any issues or questions, please file an issue on our GitHub repository.

Merged pull requests:

Closed issues:

  • Renormalize the tensors before SVD for the CTMRG projectors (#137)
  • Use FixedSpaceTruncation before gauge fixing (#157)
  • Performance(?) regressions after update to Zygote.jl v0.7.5 (#166)
  • Bug in add_physical_charge for fermionic operators (#259)
  • [Discussion] Remove support for specifying ComplexSpaces using integers (#265)
  • Convention of XXZ model (#271)
  • Set up a bot to re-generate example docs (#286)
  • Error when implementing the example Fermi Hubbard model (#288)

v0.6.1

06 Aug 17:30
b2d8b76

Choose a tag to compare

PEPSKit v0.6.1

Diff since v0.6.0

  • This version contains a number of performance improvements, specifically for the dominant contractions within CTMRG for PEPS.
  • We now support constructing reduced density matrices (reduced_densitymatrix), which also has a more efficient implementation than before. This is now used for obtaining expectation values as well.
  • There now is built-in support for computing correlators along the horizontal or vertical directions (correlator).
  • There is a new truncation mode (SiteDependentTruncation) to allow specifying site-dependent truncation schemes
  • Several small internal changes were made to improve type stability.

Merged pull requests:

Closed issues:

  • Memory usage when calculating expectation value on two far away sites on the same row/column (#163)
  • Stack on an empty collection for iterative svd (#185)
  • About the graph (#193)
  • PEPSKit.cost_function fluctuates for converged environment (#196)
  • SpaceMismatch in correlation_length from CTMRG (#197)
  • correlation_length may return wrong values (#199)
  • PEPSKit 0.6.0: LAPACK error and CTMRG failure in Fermi-Hubbard example with symmetries (#200)
  • Possible useless @set in compute_projector (#204)
  • Enlarged corners contraction order (#213)
  • 2nd neighbor simple update results (#215)
  • Projectors performance improvements (#220)
  • Expectation value performance improvements (#221)
  • scale!!, add!! in VectorInterface.jl not implemented for InfinitePEPS (#225)
  • Mismatch between correlator and expectation_value for fermionic PEPS (#231)
  • dtmap is not diffable anymore? (#235)

v0.6.0

07 May 13:38
7254747

Choose a tag to compare

PEPSKit v0.6.0

Diff since v0.5.0

Version 0.6.0 of PEPSKit contains a number of small improvements and fixes, some minor breaking changes and most notably a large amount of documentation improvements.

The documentation page now hosts a better explanation of the workings of the package, both through better docstrings, but also with a large amount of working examples that showcase the capabilities of the package.

We expanded the features for the differentiation of the SVD routines by adding the ability to have Lorentzian broadening.

The minor improvements consist of some better show methods, conversions, utility constructors, real, imag support, ...

We now also have a slightly more consistent interface for initializing boundary MPS, for which we added the (breaking change) of renaming initializeMPS -> initialize_mps.
Additionally, PEPSKit is now compatible with MPSKit v0.13+.

The fixes include some missing parity matrices in the fermionic contractions, and some inconsistencies in the chosen scalartype for the environments of states with real elements.

Merged pull requests:

Closed issues:

  • Space mismatch for simple update with trivial unit cell (#169)
  • Negative network_value due to tr for fermions (#173)
  • Performance Issue with Parallelism (#178)
  • Degenerate SVD values (#179)

v0.5.0

19 Mar 14:31
69d92f8

Choose a tag to compare

PEPSKit v0.5.0

Diff since v0.4.2

PEPSKit.jl v0.5.0 consitutes a rather large update, featuring a thorough overhaul of the optimization interface, significant improvements in stability of the optimization and some new algorithm implementations. Changes of note are:

  • A new keyword-based interface to the optimization and contraction routines which allows to set all relevant algorithm parameters through named tuples, avoiding the need to instantiate explicit algorithm structs on the user side.
    • The original struct-based interface is still functional, but is now considered more as 'expert-mode' usage. However, some of the keyword names have changed to improve consistency, making this a breaking release.
  • Significant improvements in stability and performance for the CTMRG fixed-point differentiation, with
    • The addition of a more efficient EigSolver gradient algorithm for solving the fixed-point gradient linear problem
    • Significant stability improvements in the constituent SVD pullback, using both a dense- and and sparse-style reverse rule.
  • The addition of custom PEPS retractions which preserve the Euclidean norm of each PEPS tensor, greatly improving the stability of the optimizations.
  • The addition support for PEPS-PEPO-PEPS networks through a unified contractible network interface.
  • The addition of bond truncation algorithms for time evolution.

Merged pull requests:

  • CTMRG support for PEPS-PEPO-PEPS networks (#134) (@leburgel)
  • Implement charge shift for LocalOperator (#135) (@leburgel)
  • Implement TensorKit's tsvd! reverse-rule for :fixed differentiation mode (#150) (@pbrehmer)
  • Implement norm-preserving retractions (#151) (@leburgel)
  • Scale rrule_alg tolerance with singular value magnitude when using KrylovKit.svdsolve pullback (#155) (@leburgel)
  • Split off norm-preserving vector retractions (#160) (@leburgel)
  • Update README (#162) (@leburgel)

Closed issues:

  • SpaceMismatch for the naive gradient evaluation (#147)
  • Failing CTMRG gradient tests for fermionic Hamiltonian (#158)

v0.4.2

12 Mar 13:52
f615064

Choose a tag to compare

PEPSKit v0.4.2

Diff since v0.4.1

Merged pull requests:

Closed issues:

  • Use FixedSpaceTruncation in CTMRG rrule (#138)

v0.4.1

05 Feb 13:03
f0382f4

Choose a tag to compare

PEPSKit v0.4.1

Diff since v0.4.0

Merged pull requests:

v0.4.0

03 Feb 12:29
10d51e0

Choose a tag to compare

PEPSKit v0.4.0

Diff since v0.3.0

Apart from several performance and utility features, this release features a host of new and improved algorithms.
We now support a simple update scheme for (imaginary) time evolution, and the CTMRG schemes also work on single-layer partition functions.
Behind the screens, we are now running on the newer versions of TensorKit (v0.13+), TensorOperations (v5+) and Zygote (v0.7+). We hopefully expect some performance increases from this.
This is however a breaking change, along with some minor interface changes.

Merged pull requests:

  • Make :sequential act column-wise (#90) (@pbrehmer)
  • Use reallinsolve for solving the CTMRG gradient linear problem (#94) (@pbrehmer)
  • Add simple update algorithm (#97) (@Yue-Zhengyuan)
  • Implement full-infinite projector algorithm (#99) (@pbrehmer)
  • Macroexpand generated functions (#101) (@lkdvos)
  • Warn in case of real environments in :fixed mode (#102) (@pbrehmer)
  • Fix FullInfiniteProjector (#107) (@Yue-Zhengyuan)
  • Fix faulty CTMRG contractions (#110) (@pbrehmer)
  • Add CTMRG support for regular 2D partition functions (#111) (@leburgel)
  • CompatHelper: bump compat for Zygote to 0.7, (keep existing compat) (#112) (@github-actions[bot])
  • Fix contraction order optimization for LocalOperator contractions (#114) (@pbrehmer)
  • CompatHelper: bump compat for MPSKit to 0.12, (keep existing compat) (#119) (@github-actions[bot])
  • CompatHelper: bump compat for OptimKit to 0.4, (keep existing compat) (#122) (@github-actions[bot])

Closed issues:

  • Possible improvement of sequential CTMRG (#88)
  • Add option to use full-infinite (4x4) environment in CTMRG (#93)
  • PEPSOptimize fails for real tensors (#100)
  • Warning when precompiling: using OhMyThreads.@set in module PEPSKit conflicts with an existing identifier (#104)
  • Bra and ket conjugated incorrectly in recent commits (#109)
  • Introduce InfiniteSquareNetwork supertype to reduce redundancies? (#113)
  • Generalization of the CTMRG state type (#115)

v0.3.0

15 Nov 12:10
90375ca

Choose a tag to compare

PEPSKit v0.3.0

Diff since v0.2.2

This release features a variety of updates, fixes and improvements.
Most notably, there now is extended multithreading over unitcells support for both the forwards, as well as backwards passes in CTMRG gradient calculations.
There are also several organization improvements, default parameter improvements and small fixes.

Merged pull requests:

  • Implement multi-threading using OhMyThreads and make it differentiable (#70) (@pbrehmer)
  • Implement sparse SVD with function handles (#72) (@pbrehmer)
  • Zenodo link and citation file (#76) (@lkdvos)
  • Fix Zenodo link (#77) (@pbrehmer)
  • Make sdiag_inv_sqrt use pseudo-inverse (#78) (@pbrehmer)
  • Improve default SVD rrule_alg (#79) (@pbrehmer)
  • Change default SVD algorithm to SDD and update tests (#83) (@pbrehmer)
  • Remove CTMRG redundant logging (#84) (@Yue-Zhengyuan)
  • CI updates (#85) (@lkdvos)
  • CompatHelper: add new compat entry for OhMyThreads at version 0.7, (keep existing compat) (#87) (@github-actions[bot])
  • Print degenerate singular values warning only during derivation (#92) (@pbrehmer)
  • Excise RecursiveVec (#95) (@lkdvos)
  • CompatHelper: bump compat for VectorInterface to 0.5, (keep existing compat) (#96) (@github-actions[bot])

Closed issues:

  • pseudo inverse in sdiag_inv_sqrt? (#73)
  • Sequential CTMRG is slow compared to Python (with PyTorch) (#81)
  • Provide options to silence warning but still print other information of CTMRG (#89)

v0.2.2

16 Oct 08:43
ee68ea4

Choose a tag to compare

PEPSKit v0.2.2

Diff since v0.2.1

Merged pull requests:

  • Clean up symmetrization and add optimization callback (#62) (@pbrehmer)
  • Define + for LocalOperators (#63) (@Gertian)
  • Improve CTMRG error computation (#65) (@lkdvos)
  • Implement symmetric versions of models (#66) (@pbrehmer)
  • FiniteDifferences to_vec support (#67) (@lkdvos)
  • Change default values (#68) (@pbrehmer)
  • Product state PEPS with noise (#69) (@pbrehmer)
  • CompatHelper: add new compat entry for MPSKitModels at version 0.3, (keep existing compat) (#71) (@github-actions[bot])
  • Fix CTMRG miniter and Accessors.@set (#74) (@pbrehmer)
  • CompatHelper: add new compat entry for FiniteDifferences at version 0.12, (keep existing compat) (#75) (@github-actions[bot])

Closed issues:

  • Question : How does CTMRG work together with symmetric tensors ? (#64)

v0.2.1

14 Aug 12:01
ea0427d

Choose a tag to compare

PEPSKit v0.2.1

Diff since v0.2.0

Fixes an issue with unit cells

Merged pull requests:

  • Fix virtual space error for larger unit cells (#60) (@lkdvos)