Recent Releases of PEPSKit

PEPSKit - v0.6.1

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: - Add 3-site simple update (aka 3-site cluster update) (#171) (@Yue-Zhengyuan) - Implement rotation for InfiniteWeightPEPS (#182) (@Yue-Zhengyuan) - Rewrite svd to avoid empty blocks (#191) (@lkdvos) - Update SVD reverse-rule broadening (#194) (@pbrehmer) - Fix row and column mismatch in correlation_length with unit cells (#198) (@ogauthe) - Fix edge renormalization diagrams (#201) (@pbrehmer) - Fix FixedSpaceTruncation for simple update (#202) (@Yue-Zhengyuan) - Add full update bond environment and gauge fixing (#203) (@Yue-Zhengyuan) - Properly normalize truncation error in compute_projector (#206) (@pbrehmer) - Remove _condition_number and replace by LinearAlgebra.cond (#208) (@pbrehmer) - Update fixedpoint docstring (#209) (@pbrehmer) - add correlation functions (#210) (@sanderdemeyer) - Allow bond-dependent truncation scheme in Simple Update (#211) (@sanderdemeyer) - Update correlation length normalization (#212) (@lkdvos) - [Perf] EnlargedCorner optimizations (#214) (@lkdvos) - Fix charge convention in Fermi-Hubbard example (#217) (@lkdvos) - spacetype for PEPSKit objects (#218) (@ogauthe) - Fix 3-site SU dt and reduce artificial C4v breaking (#219) (@Yue-Zhengyuan) - Update JuliaFormatter to v2 (#224) (@lkdvos) - Implement VectorInterface's scale!! and add! for InfinitePEPS (#226) (@pbrehmer) - Fix example caching checksum (#227) (@pbrehmer) - [Perf] Another round of performance improvements (#229) (@lkdvos) - Reduced density matrices (#230) (@lkdvos) - Fix correlator for fermionic PEPS (#232) (@Yue-Zhengyuan) - [Perf] reuse renormalize_west_edge for all directions (#237) (@ogauthe) - CompatHelper: bump compat for KrylovKit to 0.10, (keep existing compat) (#238) (@github-actions[bot]) - Bump v0.6.1 (#240) (@lkdvos)

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.costfunction fluctuates for converged environment (#196) - SpaceMismatch in correlationlength 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)

- Julia
Published by github-actions[bot] 11 months ago

PEPSKit - v0.6.0

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: - CompatHelper: bump compat for OhMyThreads to 0.8, (keep existing compat) (#159) (@github-actions[bot]) - Documentation update (#161) (@leburgel) - Remove unnecessary type restriction on _safe_pow (#165) (@pbrehmer) - Update VUMPS environments calling syntax (#167) (@leburgel) - Define Base.show for SUWeight (#168) (@Yue-Zhengyuan) - Add unit cell size check for simple update (#170) (@Yue-Zhengyuan) - Add InfinitePEPS to InfiniteWeightPEPS conversion (#172) (@sanderdemeyer) - Fermionic fixes (#174) (@lkdvos) - Fix optimizer verbosity in fixedpoint algorithm selector (#175) (@pbrehmer) - Fix LocalOperator constructor for indices of type Tuple{Int,Int} (#176) (@pbrehmer) - Define real, imag for LocalOperator (#177) (@Yue-Zhengyuan) - Refactor initializeMPS (#180) (@pbrehmer) - Add modified tsvd! reverse-rule with Lorentzian broadening (#181) (@pbrehmer) - Compatibility for MPSKit 0.13 (#183) (@github-actions[bot]) - Fix environment constructor scalar type (#186) (@lkdvos) - Bump v0.6.0 (#189) (@lkdvos)

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)

- Julia
Published by github-actions[bot] about 1 year ago

PEPSKit - v0.5.0

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)

- Julia
Published by github-actions[bot] over 1 year ago

PEPSKit - v0.4.2

PEPSKit v0.4.2

Diff since v0.4.1

Merged pull requests: - Add eigsolve-style rrule for CTMRG fixed-point gradient (#126) (@leburgel) - Clean up and simplify optimization interface (#127) (@pbrehmer) - Add bond truncation algorithms for time evolution (#128) (@Yue-Zhengyuan) - Implement keyword selector (#130) (@pbrehmer) - Add unified contractible network interface (#131) (@leburgel) - Refactor boundary MPS contractions (#132) (@leburgel) - Enforce FixedSpaceTruncation during differentiation (#140) (@pbrehmer) - Pick out CTMRG left move as a separate function (#141) (@Yue-Zhengyuan) - Wrap SU intermediate steps into functions (#143) (@Yue-Zhengyuan) - Refactor absorb_weight and use leftorth in _qr_bond (#146) (@Yue-Zhengyuan) - Fix Base.similar for physical and contractible network types (#149) (@leburgel) - Bump KrylovKit compat (#156) (@leburgel)

Closed issues: - Use FixedSpaceTruncation in CTMRG rrule (#138)

- Julia
Published by github-actions[bot] over 1 year ago

PEPSKit - v0.4.1

PEPSKit v0.4.1

Diff since v0.4.0

Merged pull requests: - Update correlation_length implementation (#123) (@leburgel) - Adapt simple update to DiagonalTensorMap (#124) (@Yue-Zhengyuan) - Refactor boundary MPS contractions to directly use MPSKit.InfiniteMPO (#125) (@leburgel)

- Julia
Published by github-actions[bot] over 1 year ago

PEPSKit - v0.4.0

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)

- Julia
Published by github-actions[bot] over 1 year ago

PEPSKit - v0.3.0

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 sdiaginvsqrt? (#73) - Sequential CTMRG is slow compared to Python (with PyTorch) (#81) - Provide options to silence warning but still print other information of CTMRG (#89)

- Julia
Published by github-actions[bot] over 1 year ago

PEPSKit - v0.2.2

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)

- Julia
Published by github-actions[bot] over 1 year ago

PEPSKit - v0.2.1

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)

- Julia
Published by github-actions[bot] almost 2 years ago

PEPSKit - v0.2.0

PEPSKit v0.2.0

Diff since v0.1.0

This update includes a new CTMRG scheme, support for fermionic symmetries and various other improvements and fixes.

Merged pull requests: - Correct adjoint for truncated SVD (#15) (@pbrehmer) - Fix degenerate singular value check with symmetric tensors (#37) (@lkdvos) - Actually fix the thing I said I fixed before... (#38) (@lkdvos) - Fix typo in VectorInterface implementation for CTMRGEnv (#40) (@lkdvos) - Update badges and links (#41) (@leburgel) - Add write permissions to docs action (#42) (@leburgel) - Update CompatHelper.yml (#43) (@lkdvos) - CompatHelper: bump compat for KrylovKit to 0.8, (keep existing compat) (#44) (@github-actions[bot]) - Bump julia-actions/setup-julia from 1 to 2 (#45) (@dependabot[bot]) - Rewrite local expectation values as a single contraction (#46) (@leburgel) - Add support for fermionic systems (#47) (@qmortier) - PEPSHamiltonian Refactor (#49) (@lkdvos) - Logging utilities (#51) (@lkdvos) - Extend CTMRGEnv constructor for nontrivial unit cells (#52) (@leburgel) - Implement simultaneous CTMRG scheme and CTMRG gradients without gauge-fix differentiation (#53) (@pbrehmer) - CompatHelper: add new compat entry for LoggingExtras at version 1, (keep existing compat) (#55) (@github-actions[bot]) - Add MPSKit.correlation_length method for PEPS (#57) (@pbrehmer) - Reorganize files and clean up (#58) (@pbrehmer) - Bump version v0.2 (#59) (@lkdvos)

Closed issues: - Planar automatic differentiation. (#11) - Error after unconverged KrylovKit.GMRES linear solve (#39)

- Julia
Published by github-actions[bot] almost 2 years ago

PEPSKit - v0.1.0

PEPSKit v0.1.0

Merged pull requests: - Gepruts (#1) (@DaanMaertens) - peps vumps (#2) (@maartenvd) - Gepruts (#4) (@DaanMaertens) - array version to hrz branch (#5) (@huangrzh) - Hrz (#6) (@maartenvd) - Updates and Compats (#7) (@lkdvos) - Implement fixed-point differentiation and gauge-fixing (#13) (@pbrehmer) - Update gauge fixing to work with symmetries (#19) (@leburgel) - Remove PEPO optimization code (#21) (@leburgel) - Add documentation (#22) (@pbrehmer) - Update optimization to use rrule system (#23) (@lkdvos) - Add tests to CI (#24) (@lkdvos) - Change argument order leading_boundary with CTMRG (#27) (@lkdvos) - Add docstrings and example for boundary MPS functionality (#28) (@leburgel) - Rework github actions (#30) (@lkdvos) - Update README (#31) (@lkdvos) - Update actions and docs index page (#32) (@leburgel) - CompatHelper: add new compat entry for KrylovKit at version 0.7, (keep existing compat) (#33) (@github-actions[bot]) - CompatHelper: add new compat entry for Parameters at version 0.12, (keep existing compat) (#34) (@github-actions[bot]) - add Krylovkit 0.6 to compat (#35) (@lkdvos)

Closed issues: - Inexact error when running the Heisenberg example (#9) - My planar contractions currently lead to space mismatches. (#10) - Gauge fixing for nontrivial symmetries and unit cells (#18)

- Julia
Published by github-actions[bot] about 2 years ago