Skip to content

make all caches behave the same#244

Merged
lkdvos merged 7 commits intomasterfrom
jh/cacheredesign
Jun 25, 2025
Merged

make all caches behave the same#244
lkdvos merged 7 commits intomasterfrom
jh/cacheredesign

Conversation

@Jutho
Copy link
Member

@Jutho Jutho commented Apr 16, 2025

A first attempt at resolving #242

@codecov
Copy link

codecov bot commented Apr 16, 2025

Codecov Report

Attention: Patch coverage is 92.80000% with 9 lines in your changes missing coverage. Please review.

Project coverage is 83.01%. Comparing base (c37cf86) to head (43fdc24).
Report is 2 commits behind head on master.

Files with missing lines Patch % Lines
src/auxiliary/caches.jl 90.58% 8 Missing ⚠️
src/tensors/treetransformers.jl 90.00% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##           master     #244      +/-   ##
==========================================
+ Coverage   82.66%   83.01%   +0.34%     
==========================================
  Files          43       44       +1     
  Lines        5583     5621      +38     
==========================================
+ Hits         4615     4666      +51     
+ Misses        968      955      -13     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Copy link
Member

@lkdvos lkdvos left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I really like this change a lot!

I left some comment about being able to display the current cache usage, and additionally I was wondering if the caching could be something worth creating a small library for, since I would like to have the option to support caching of the Fsymbol and Rsymbols in TensorKitSectors as well. We don't necessarily have to share the same machinery for that, since there is also the question of possibly storing these on disk, but I did want to bring this up to discuss here.

@Jutho
Copy link
Member Author

Jutho commented Apr 16, 2025

These are all good suggestions, but I first want to understand how this change can end up breaking LRUCache. These errors come straight out of the LRUCache functions which should have locked the cache, so I don't know how that is possible, and why it only happens in the case of rrules, since there is no actual AD/Zygote machinery involved.

Regarding making this into a separate package; I am not sure if I can maintain more general-purpose packages :-). Also, if we end up using LRUCache{Any,Any} everywhere, it might be worth checking out if we are not better of using Memoization.jl or something similar.

@Jutho
Copy link
Member Author

Jutho commented Apr 18, 2025

@lkdvos, thanks for finding the bug and fixing it. Not sure why CI didn't run on your last commit?

@Jutho
Copy link
Member Author

Jutho commented Apr 18, 2025

Oh I see, it is still waiting for the CI of the other PR to finish.

@lkdvos
Copy link
Member

lkdvos commented Apr 18, 2025

I have absolutely no idea about the CI, I had to trigger that manually somehow

Copy link
Member

@lkdvos lkdvos left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think that this would actually be a nice addition, so perhaps we can push this through?

@lkdvos
Copy link
Member

lkdvos commented Jun 12, 2025

@Jutho friendly reminder that this PR is more or less ready, so it might be reasonable to try and push it over the edge

@lkdvos
Copy link
Member

lkdvos commented Jun 25, 2025

So as a compromise, I set the default cache size to 10^4, resolved the comments, and added a really simple function to just print the status of all of the caches, which I think will be helpful. If tests pass, this is good to go for me.

@Jutho
Copy link
Member Author

Jutho commented Jun 25, 2025

So as a compromise, I set the default cache size to 10^4, resolved the comments, and added a really simple function to just print the status of all of the caches, which I think will be helpful. If tests pass, this is good to go for me.

Too bad real-life compromises are typically not made on a logarithmic scale 😄.

Anyway, I like the latest changes to this PR.

@lkdvos
Copy link
Member

lkdvos commented Jun 25, 2025

I'll try and run the benchmarks before merging, and post the results here.

@lkdvos
Copy link
Member

lkdvos commented Jun 25, 2025

Overall, this looks like nothing really changed within the margins of this limited benchmarksuite, so good to merge for me!

Benchmark results
jh/cacheredesi... master jh/cacheredesi... / master
indexmanipulations/permute/permute/("Float64", "Trivial", "[43408, 1216]", "nothing", "Union{Vector{Int64}, Vector{Union{}}}[[2, 1], Union{}[]]") 0.0704 ± 0.00052 s 0.1 ± 0.00015 s 0.702 ± 0.0053
indexmanipulations/permute/permute/("Float64", "Trivial", "[7264, 7264]", "nothing", "Union{Vector{Int64}, Vector{Union{}}}[[2, 1], Union{}[]]") 0.069 ± 2.7e-06 s 0.0959 ± 0.00024 s 0.719 ± 0.0018
indexmanipulations/permute/permute/("Float64", "Z2Irrep", "[43408, 1216]", "[0.5, 0.5]", "Union{Vector{Int64}, Vector{Union{}}}[[2, 1], Union{}[]]") 0.0345 ± 0.002 s 0.0471 ± 0.00015 s 0.732 ± 0.042
indexmanipulations/permute/permute/("Float64", "Z2Irrep", "[7264, 7264]", "[0.5, 0.5]", "Union{Vector{Int64}, Vector{Union{}}}[[2, 1], Union{}[]]") 0.0355 ± 0.0016 s 0.0457 ± 0.0005 s 0.776 ± 0.037
linalg/mul/mul/("ComplexF64", "Trivial", "[128, 128, 128]", "nothing") 0.11 ± 0.011 ms 0.11 ± 0.0084 ms 0.996 ± 0.13
linalg/mul/mul/("ComplexF64", "Trivial", "[2, 2, 2]", "nothing") 0.798 ± 0.032 μs 0.8 ± 0.036 μs 0.998 ± 0.06
linalg/mul/mul/("ComplexF64", "Trivial", "[32, 32, 32]", "nothing") 7.27 ± 0.57 μs 7.29 ± 0.65 μs 0.997 ± 0.12
linalg/mul/mul/("ComplexF64", "Trivial", "[64, 64, 64]", "nothing") 0.0384 ± 0.003 ms 0.0383 ± 0.003 ms 1 ± 0.11
linalg/mul/mul/("ComplexF64", "Trivial", "[8, 8, 8]", "nothing") 1.41 ± 0.082 μs 1.34 ± 0.076 μs 1.06 ± 0.086
linalg/mul/mul/("ComplexF64", "Z2Irrep", "[128, 128, 128]", "[0.5, 0.5, 0.5]") 0.0765 ± 0.0061 ms 0.0733 ± 0.0058 ms 1.04 ± 0.12
linalg/mul/mul/("ComplexF64", "Z2Irrep", "[2, 2, 2]", "[0.5, 0.5, 0.5]") 1.18 ± 0.04 μs 1.15 ± 0.03 μs 1.03 ± 0.044
linalg/mul/mul/("ComplexF64", "Z2Irrep", "[32, 32, 32]", "[0.5, 0.5, 0.5]") 3.82 ± 0.44 μs 3.91 ± 0.51 μs 0.978 ± 0.17
linalg/mul/mul/("ComplexF64", "Z2Irrep", "[64, 64, 64]", "[0.5, 0.5, 0.5]") 13.3 ± 0.2 μs 13.2 ± 0.23 μs 1 ± 0.023
linalg/mul/mul/("ComplexF64", "Z2Irrep", "[8, 8, 8]", "[0.5, 0.5, 0.5]") 1.33 ± 0.057 μs 1.28 ± 0.053 μs 1.04 ± 0.062
linalg/mul/mul/("Float64", "Trivial", "[128, 128, 128]", "nothing") 0.162 ± 0.084 ms 0.0756 ± 0.0096 ms 2.14 ± 1.1
linalg/mul/mul/("Float64", "Trivial", "[2, 2, 2]", "nothing") 0.785 ± 0.032 μs 0.773 ± 0.023 μs 1.02 ± 0.051
linalg/mul/mul/("Float64", "Trivial", "[32, 32, 32]", "nothing") 1.69 ± 0.13 μs 1.73 ± 0.17 μs 0.977 ± 0.12
linalg/mul/mul/("Float64", "Trivial", "[64, 64, 64]", "nothing") 6.96 ± 0.41 μs 6.96 ± 0.41 μs 0.999 ± 0.083
linalg/mul/mul/("Float64", "Trivial", "[8, 8, 8]", "nothing") 1.01 ± 0.068 μs 0.988 ± 0.046 μs 1.02 ± 0.084
linalg/mul/mul/("Float64", "Z2Irrep", "[128, 128, 128]", "[0.5, 0.5, 0.5]") 12.2 ± 0.33 μs 12.2 ± 0.45 μs 1 ± 0.046
linalg/mul/mul/("Float64", "Z2Irrep", "[2, 2, 2]", "[0.5, 0.5, 0.5]") 0.895 ± 0.048 μs 0.907 ± 0.054 μs 0.987 ± 0.079
linalg/mul/mul/("Float64", "Z2Irrep", "[32, 32, 32]", "[0.5, 0.5, 0.5]") 1.24 ± 0.08 μs 1.27 ± 0.15 μs 0.98 ± 0.13
linalg/mul/mul/("Float64", "Z2Irrep", "[64, 64, 64]", "[0.5, 0.5, 0.5]") 2.41 ± 0.12 μs 2.44 ± 0.18 μs 0.986 ± 0.088
linalg/mul/mul/("Float64", "Z2Irrep", "[8, 8, 8]", "[0.5, 0.5, 0.5]") 0.92 ± 0.04 μs 0.932 ± 0.044 μs 0.987 ± 0.063
linalg/svd/svd/("ComplexF64", "Trivial", "[128, 128]", "nothing") 8.65 ± 1.1 ms 8.87 ± 0.44 ms 0.975 ± 0.13
linalg/svd/svd/("ComplexF64", "Trivial", "[2, 2]", "nothing") 5.75 ± 0.56 μs 5.66 ± 0.43 μs 1.02 ± 0.13
linalg/svd/svd/("ComplexF64", "Trivial", "[32, 32]", "nothing") 0.208 ± 0.008 ms 0.209 ± 0.0083 ms 0.997 ± 0.055
linalg/svd/svd/("ComplexF64", "Trivial", "[64, 64]", "nothing") 0.969 ± 0.015 ms 0.971 ± 0.067 ms 0.997 ± 0.07
linalg/svd/svd/("ComplexF64", "Trivial", "[8, 8]", "nothing") 20.3 ± 1.7 μs 20.7 ± 2.3 μs 0.978 ± 0.14
linalg/svd/svd/("ComplexF64", "Z2Irrep", "[128, 128]", "[0.5, 0.5]") 1.94 ± 0.061 ms 2.11 ± 0.68 ms 0.92 ± 0.3
linalg/svd/svd/("ComplexF64", "Z2Irrep", "[2, 2]", "[0.5, 0.5]") 8.03 ± 1.7 μs 8.03 ± 1.8 μs 1 ± 0.31
linalg/svd/svd/("ComplexF64", "Z2Irrep", "[32, 32]", "[0.5, 0.5]") 0.114 ± 0.0072 ms 0.114 ± 0.0083 ms 0.999 ± 0.096
linalg/svd/svd/("ComplexF64", "Z2Irrep", "[64, 64]", "[0.5, 0.5]") 0.414 ± 0.015 ms 0.418 ± 0.018 ms 0.99 ± 0.056
linalg/svd/svd/("ComplexF64", "Z2Irrep", "[8, 8]", "[0.5, 0.5]") 16.1 ± 2 μs 16.2 ± 2.3 μs 0.996 ± 0.19
linalg/svd/svd/("Float64", "Trivial", "[128, 128]", "nothing") 3.98 ± 0.26 ms 3.97 ± 0.35 ms 1 ± 0.11
linalg/svd/svd/("Float64", "Trivial", "[2, 2]", "nothing") 4.31 ± 0.19 μs 4.19 ± 0.22 μs 1.03 ± 0.071
linalg/svd/svd/("Float64", "Trivial", "[32, 32]", "nothing") 0.139 ± 0.0043 ms 0.14 ± 0.0068 ms 0.995 ± 0.057
linalg/svd/svd/("Float64", "Trivial", "[64, 64]", "nothing") 0.802 ± 0.12 ms 0.745 ± 0.27 ms 1.08 ± 0.43
linalg/svd/svd/("Float64", "Trivial", "[8, 8]", "nothing") 13.7 ± 0.94 μs 13.7 ± 0.99 μs 1 ± 0.1
linalg/svd/svd/("Float64", "Z2Irrep", "[128, 128]", "[0.5, 0.5]") 1.84 ± 0.11 ms 1.38 ± 0.55 ms 1.34 ± 0.53
linalg/svd/svd/("Float64", "Z2Irrep", "[2, 2]", "[0.5, 0.5]") 5.46 ± 1.4 μs 5.62 ± 1.5 μs 0.971 ± 0.36
linalg/svd/svd/("Float64", "Z2Irrep", "[32, 32]", "[0.5, 0.5]") 0.0847 ± 0.0042 ms 0.0846 ± 0.0042 ms 1 ± 0.07
linalg/svd/svd/("Float64", "Z2Irrep", "[64, 64]", "[0.5, 0.5]") 0.275 ± 0.0065 ms 0.277 ± 0.014 ms 0.994 ± 0.056
linalg/svd/svd/("Float64", "Z2Irrep", "[8, 8]", "[0.5, 0.5]") 13.1 ± 1.8 μs 13.5 ± 1.6 μs 0.975 ± 0.17
tensornetworks/mera/mera/("Float64", "Trivial", 12, "nothing") 0.177 ± 0.0061 s 0.177 ± 0.038 s 1 ± 0.22
tensornetworks/mera/mera/("Float64", "Trivial", 16, "nothing") 1.39 s 1.33 s 1.04
tensornetworks/mera/mera/("Float64", "Trivial", 2, "nothing") 0.136 ± 0.0056 ms 0.14 ± 0.0049 ms 0.969 ± 0.052
tensornetworks/mera/mera/("Float64", "Trivial", 3, "nothing") 0.2 ± 0.027 ms 0.201 ± 0.029 ms 0.997 ± 0.2
tensornetworks/mera/mera/("Float64", "Trivial", 4, "nothing") 0.335 ± 0.034 ms 0.342 ± 0.093 ms 0.981 ± 0.29
tensornetworks/mera/mera/("Float64", "Trivial", 8, "nothing") 13.2 ± 1.7 ms 13.6 ± 2.7 ms 0.973 ± 0.23
tensornetworks/mera/mera/("Float64", "U1Irrep", 12, 0.5) 0.112 ± 0.015 s 0.109 ± 0.0033 s 1.03 ± 0.14
tensornetworks/mera/mera/("Float64", "U1Irrep", 16, 0.5) 0.992 ± 0.11 s 0.852 ± 0.11 s 1.16 ± 0.2
tensornetworks/mera/mera/("Float64", "U1Irrep", 22, 0.5) 7.35 s 7.38 s 0.996
tensornetworks/mera/mera/("Float64", "U1Irrep", 28, 0.5) 40.1 s 41 s 0.978
tensornetworks/mera/mera/("Float64", "U1Irrep", 4, 0.5) 0.294 ± 0.045 ms 0.297 ± 0.045 ms 0.991 ± 0.21
tensornetworks/mera/mera/("Float64", "U1Irrep", 8, 0.5) 10 ± 0.43 ms 9.82 ± 1.2 ms 1.02 ± 0.14
tensornetworks/mera/mera/("Float64", "Z2Irrep", 12, 0.5) 0.125 ± 0.0042 s 0.119 ± 0.0073 s 1.06 ± 0.074
tensornetworks/mera/mera/("Float64", "Z2Irrep", 16, 0.5) 0.833 ± 0.086 s 0.852 ± 0.089 s 0.977 ± 0.14
tensornetworks/mera/mera/("Float64", "Z2Irrep", 2, 0.5) 0.18 ± 0.0055 ms 0.18 ± 0.0064 ms 1 ± 0.047
tensornetworks/mera/mera/("Float64", "Z2Irrep", 20, 0.5) 3.16 s 3.1 s 1.02
tensornetworks/mera/mera/("Float64", "Z2Irrep", 4, 0.5) 0.412 ± 0.089 ms 0.429 ± 0.089 ms 0.961 ± 0.29
tensornetworks/mera/mera/("Float64", "Z2Irrep", 8, 0.5) 10.5 ± 6.5 ms 11.2 ± 5.7 ms 0.945 ± 0.76
tensornetworks/mpo/mpo/("Float64", "Trivial", "[10, 4, 3]", "nothing") 0.0418 ± 0.0079 ms 0.0418 ± 0.0079 ms 1 ± 0.27
tensornetworks/mpo/mpo/("Float64", "Trivial", "[100, 10, 10]", "nothing") 9 ± 2.9 ms 9.04 ± 2.7 ms 0.995 ± 0.44
tensornetworks/mpo/mpo/("Float64", "Trivial", "[160, 4, 3]", "nothing") 2.47 ± 0.37 ms 2.6 ± 0.37 ms 0.948 ± 0.19
tensornetworks/mpo/mpo/("Float64", "Trivial", "[200, 10, 10]", "nothing") 0.0339 ± 0.0042 s 0.0381 ± 0.0059 s 0.889 ± 0.18
tensornetworks/mpo/mpo/("Float64", "Trivial", "[2560, 4, 3]", "nothing") 1.84 s 1.69 s 1.09
tensornetworks/mpo/mpo/("Float64", "Trivial", "[300, 20, 20]", "nothing") 0.284 ± 0.12 s 0.307 ± 0.077 s 0.924 ± 0.46
tensornetworks/mpo/mpo/("Float64", "Trivial", "[40, 4, 3]", "nothing") 0.203 ± 0.037 ms 0.183 ± 0.024 ms 1.11 ± 0.25
tensornetworks/mpo/mpo/("Float64", "Trivial", "[640, 4, 3]", "nothing") 0.0652 ± 0.0048 s 0.0603 ± 0.0059 s 1.08 ± 0.13
tensornetworks/mpo/mpo/("Float64", "U1Irrep", "[160, 5, 3]", 0.5) 2.32 ± 0.19 ms 2.18 ± 0.18 ms 1.06 ± 0.12
tensornetworks/mpo/mpo/("Float64", "U1Irrep", "[200, 20, 20]", 0.5) 0.0831 ± 0.0059 s 0.0773 ± 0.0092 s 1.08 ± 0.15
tensornetworks/mpo/mpo/("Float64", "U1Irrep", "[2560, 5, 3]", 0.5) 0.984 s 0.962 s 1.02
tensornetworks/mpo/mpo/("Float64", "U1Irrep", "[40, 5, 3]", 0.5) 0.172 ± 0.027 ms 0.16 ± 0.019 ms 1.07 ± 0.21
tensornetworks/mpo/mpo/("Float64", "U1Irrep", "[400, 20, 20]", 0.5) 0.337 ± 0.11 s 0.387 ± 0.12 s 0.872 ± 0.39
tensornetworks/mpo/mpo/("Float64", "U1Irrep", "[400, 40, 40]", 0.5) 1.28 s 1.13 s 1.13
tensornetworks/mpo/mpo/("Float64", "U1Irrep", "[6120, 5, 3]", 0.5) 7.77 s 7.69 s 1.01
tensornetworks/mpo/mpo/("Float64", "U1Irrep", "[640, 5, 3]", 0.5) 0.0489 ± 0.0058 s 0.0507 ± 0.005 s 0.965 ± 0.15
tensornetworks/mpo/mpo/("Float64", "Z2Irrep", "[10, 4, 4]", 0.5) 0.033 ± 0.0037 ms 0.0334 ± 0.0031 ms 0.987 ± 0.14
tensornetworks/mpo/mpo/("Float64", "Z2Irrep", "[100, 10, 10]", 0.5) 4.75 ± 3 ms 4.47 ± 2.9 ms 1.06 ± 0.96
tensornetworks/mpo/mpo/("Float64", "Z2Irrep", "[160, 4, 4]", 0.5) 2.66 ± 0.13 ms 2.65 ± 0.23 ms 1 ± 0.1
tensornetworks/mpo/mpo/("Float64", "Z2Irrep", "[200, 10, 10]", 0.5) 17.9 ± 5.3 ms 17.9 ± 5.3 ms 0.996 ± 0.42
tensornetworks/mpo/mpo/("Float64", "Z2Irrep", "[2560, 4, 4]", 0.5) 0.891 s 0.878 s 1.01
tensornetworks/mpo/mpo/("Float64", "Z2Irrep", "[300, 20, 20]", 0.5) 0.156 ± 0.015 s 0.174 ± 0.052 s 0.898 ± 0.28
tensornetworks/mpo/mpo/("Float64", "Z2Irrep", "[40, 4, 4]", 0.5) 0.139 ± 0.024 ms 0.126 ± 0.015 ms 1.11 ± 0.23
tensornetworks/mpo/mpo/("Float64", "Z2Irrep", "[640, 4, 4]", 0.5) 0.0357 ± 0.0091 s 0.0392 ± 0.0075 s 0.91 ± 0.29
tensornetworks/pepo/pepo/("Float64", "Trivial", "[3, 2, 2, 50]", "nothing") 16.6 ± 4.8 ms 13.1 ± 3 ms 1.26 ± 0.46
tensornetworks/pepo/pepo/("Float64", "Trivial", "[3, 3, 3, 100]", "nothing") 0.17 ± 0.016 s 0.197 ± 0.15 s 0.865 ± 0.66
tensornetworks/pepo/pepo/("Float64", "Trivial", "[4, 2, 2, 50]", "nothing") 0.0458 ± 0.011 s 0.0452 ± 0.0059 s 1.01 ± 0.28
tensornetworks/pepo/pepo/("Float64", "Trivial", "[4, 3, 3, 100]", "nothing") 0.678 ± 0.21 s 0.659 ± 0.11 s 1.03 ± 0.37
tensornetworks/pepo/pepo/("Float64", "Trivial", "[5, 2, 2, 50]", "nothing") 0.12 ± 0.0053 s 0.109 ± 0.021 s 1.1 ± 0.22
tensornetworks/pepo/pepo/("Float64", "Trivial", "[5, 2, 3, 100]", "nothing") 0.691 ± 0.15 s 0.587 ± 0.096 s 1.18 ± 0.33
tensornetworks/pepo/pepo/("Float64", "Trivial", "[6, 2, 2, 50]", "nothing") 0.257 ± 0.085 s 0.25 ± 0.17 s 1.03 ± 0.78
tensornetworks/pepo/pepo/("Float64", "Trivial", "[6, 3, 2, 100]", "nothing") 1.85 s 1.78 s 1.04
tensornetworks/pepo/pepo/("Float64", "U1Irrep", "[10, 2, 2, 50]", 0.5) 0.873 ± 0.17 s 0.888 ± 0.16 s 0.984 ± 0.26
tensornetworks/pepo/pepo/("Float64", "U1Irrep", "[10, 3, 2, 100]", 0.5) 5.51 s 5.65 s 0.974
tensornetworks/pepo/pepo/("Float64", "U1Irrep", "[4, 2, 2, 100]", 0.5) 0.115 ± 0.0021 s 0.11 ± 0.061 s 1.04 ± 0.58
tensornetworks/pepo/pepo/("Float64", "U1Irrep", "[4, 4, 4, 200]", 0.5) 2.47 s 2.5 s 0.986
tensornetworks/pepo/pepo/("Float64", "U1Irrep", "[6, 2, 2, 100]", 0.5) 0.602 ± 0.12 s 0.571 ± 0.11 s 1.05 ± 0.29
tensornetworks/pepo/pepo/("Float64", "U1Irrep", "[6, 3, 4, 200]", 0.5) 4.64 s 4.55 s 1.02
tensornetworks/pepo/pepo/("Float64", "U1Irrep", "[8, 2, 2, 100]", 0.5) 1.16 s 1.17 s 0.988
tensornetworks/pepo/pepo/("Float64", "U1Irrep", "[8, 2, 4, 200]", 0.5) 6.89 s 6.91 s 0.996
tensornetworks/pepo/pepo/("Float64", "Z2Irrep", "[4, 2, 2, 50]", 0.5) 0.0355 ± 0.0087 s 0.0346 ± 0.0046 s 1.03 ± 0.29
tensornetworks/pepo/pepo/("Float64", "Z2Irrep", "[4, 4, 4, 100]", 0.5) 0.738 ± 0.13 s 0.71 ± 0.11 s 1.04 ± 0.25
tensornetworks/pepo/pepo/("Float64", "Z2Irrep", "[5, 2, 2, 50]", 0.5) 0.0942 ± 0.014 s 0.0899 ± 0.011 s 1.05 ± 0.2
tensornetworks/pepo/pepo/("Float64", "Z2Irrep", "[5, 3, 4, 100]", 0.5) 1 ± 0.19 s 0.95 ± 0.13 s 1.05 ± 0.25
tensornetworks/pepo/pepo/("Float64", "Z2Irrep", "[6, 2, 2, 50]", 0.5) 0.312 ± 0.12 s 0.218 ± 0.096 s 1.43 ± 0.85
tensornetworks/pepo/pepo/("Float64", "Z2Irrep", "[6, 2, 4, 100]", 0.5) 1.15 ± 0.2 s 1.12 ± 0.22 s 1.03 ± 0.27
tensornetworks/pepo/pepo/("Float64", "Z2Irrep", "[8, 2, 2, 50]", 0.5) 0.678 ± 0.22 s 0.634 ± 0.2 s 1.07 ± 0.48
tensornetworks/pepo/pepo/("Float64", "Z2Irrep", "[8, 3, 2, 100]", 0.5) 3.2 s 3.1 s 1.03
time_to_load 0.976 ± 0.027 s 0.958 ± 0.033 s 1.02 ± 0.045

@lkdvos lkdvos merged commit 9cc0573 into master Jun 25, 2025
10 of 12 checks passed
@lkdvos lkdvos deleted the jh/cacheredesign branch June 25, 2025 16:02
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.

2 participants