Repository navigation
Neighborhood Tensor Update (NTU) - #144
Yue-Zhengyuan wants to merge 9 commits into
Conversation
ad4945f to
37ace4c
Compare
9258396 to
ecbbee4
Compare
85d2c44 to
ecbbee4
Compare
1a231ec to
4c5f078
Compare
7c9ea13 to
f9d029a
Compare
|
I'll keep this as a draft for a while to not waste resources on CI. |
Yue-Zhengyuan
left a comment
There was a problem hiding this comment.
Some comments that may help with reviewing.
|
@lkdvos Hope to get merged soon so I can proceed from here. |
lkdvos
left a comment
There was a problem hiding this comment.
Sorry for taking so long to get to this!
1d22a6c to
e3f92d1
Compare
|
@lkdvos I think all comments in the last review are addressed. Ready for another round of review! |
|
I'm now going to submit a paper for publication which says that NTU is implemented in PEPSKit. Hopefully we can finish this PR soon. |
|
Exact contraction of |
6b79447 to
c79dce6
Compare
| The fixed ten-tensor network is independent of the MPO path and its length. | ||
| Floating-point costs avoid integer overflow; dense dimensions approximate symmetry-block costs. | ||
| """ | ||
| function _ntu_contraction_order(tensors::NamedTuple) |
There was a problem hiding this comment.
🤖 has helped introduce this contraction order selector. It thinks that @tensoropt is not sufficient because it assumes that all legs involved have more or less the same dimension. But for bond environment after applying a gate MPO, such as an L-shapes NNN gate, the dimension of bond connecting, say, Y and NE will be enlarged by a factor of D_MPO, while the others remain D.
Therefore, in determine the contraction order, we need to know where the next bond that's enlarged by the MPO gate is.
I would like some help in reviewing if 🤖's approach is recommended.
c8e6c36 to
2d7af9e
Compare
Implement NTU with NN and NN+ bond environments, gauge fixing, nearest-neighbor and MPO gates, and site-dependent truncation. Rotate only the bond endpoints and required environment neighbors while accepting site coordinates in the original state frame. Add bond-environment and time-evolution tests for PEPS and PEPO.
Reuse contraction orders for the fixed NTU environment network instead of repeating the planner search for every bond. Store immutable order tuples in a locked cache bounded to 64 dimension signatures.
75110c1 to
602d074
Compare
|
@lkdvos Do you want me to split this into smaller PRs? I want to finish this soon to prevent over optimization on simple update 😅 |
(Finally, after being delayed for over a year)
This PR adds the Neighborhood Tensor Update (NTU, arXiv 2107.06635), which works for both iPEPS and iPEPO, and supports nearest neighbor 2-site gates and arbitrary MPO gates (in particular, the next-nearest neighbor 3-site MPO).
One caveat to be emphasized is that after applying an N-site gate (N > 2), the updated bonds are truncated sequentially without going back. In other words, it does not perform an ALS optimization of all site tensors that are updated, since producing the environment surrounding a general cluster of sites is complicated, and the following ALS optimization will be extremely costly.
When truncating a bond after applying a time evolution gate, the NTU uses some neighboring tensors as the bond environment, instead of using only a few bond weights (simple update) of the full iPEPS approximated by CTM (full update), "interpolating" between the two extremes. Currently the NN and NN+ bond environments (see description in the YASTN package) are implemented.