We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
1 parent c3f1429 commit f1800f1Copy full SHA for f1800f1
6 files changed
src/PEPSKit.jl
@@ -71,7 +71,7 @@ include("algorithms/select_algorithm.jl")
71
72
using .Defaults: set_scheduler!
73
export set_scheduler!
74
-export SVDAdjoint, IterSVD
+export SVDAdjoint, FullReverse, IterSVD
75
export CTMRGEnv, SequentialCTMRG, SimultaneousCTMRG
76
export FixedSpaceTruncation, HalfInfiniteProjector, FullInfiniteProjector
77
export LocalOperator
src/algorithms/ctmrg/projectors.jl
@@ -58,7 +58,6 @@ function svd_algorithm(alg::ProjectorAlgorithm, (dir, r, c))
58
return SVDAdjoint(;
59
fwd_alg=fix_svd,
60
rrule_alg=alg.svd_alg.rrule_alg,
61
- broadening=alg.svd_alg.broadening,
62
)
63
else
64
return alg.svd_alg
src/algorithms/optimization/fixed_point_differentiation.jl
@@ -263,7 +263,6 @@ function _fix_svd_algorithm(alg::SVDAdjoint, signs, info)
263
264
fwd_alg=FixedSVD(U_fixed, info.S, V_fixed, U_full_fixed, info.S_full, V_full_fixed),
265
rrule_alg=alg.rrule_alg,
266
- broadening=alg.broadening,
267
268
end
269
function _fix_svd_algorithm(alg::SVDAdjoint{F}, signs, info) where {F<:IterSVD}
@@ -272,7 +271,6 @@ function _fix_svd_algorithm(alg::SVDAdjoint{F}, signs, info) where {F<:IterSVD}
272
271
273
fwd_alg=FixedSVD(U_fixed, info.S, V_fixed, nothing, nothing, nothing),
274
275
276
277
278
test/examples/heisenberg.jl
@@ -93,7 +93,7 @@ end
93
peps,
94
env;
95
optimizer_alg=(; tol=gradtol, maxiter=25),
96
- boundary_alg=(; maxiter=150, svd_alg=(; rrule_alg=(; alg=:tsvd, tol=1e-5))),
+ boundary_alg=(; maxiter=150, svd_alg=(; rrule_alg=(; alg=:full, tol=1e-5))),
97
) # sensitivity warnings and degeneracies due to SU(2)?
98
ξ_h, ξ_v, = correlation_length(peps_final, env_final)
99
e_site2 = E_final / (N1 * N2)
test/gradients/ctmrg_gradients.jl
@@ -20,7 +20,7 @@ gradtol = 1e-4
20
ctmrg_verbosity = 0
21
ctmrg_algs = [[:sequential, :simultaneous], [:sequential, :simultaneous]]
22
projector_algs = [[:halfinfinite, :fullinfinite], [:halfinfinite, :fullinfinite]]
23
-svd_rrule_algs = [[:tsvd, :arnoldi], [:tsvd, :arnoldi]]
+svd_rrule_algs = [[:full, :arnoldi], [:full, :arnoldi]]
24
gradient_algs = [
25
[nothing, :geomsum, :manualiter, :linsolver, :eigsolver],
26
[:geomsum, :manualiter, :linsolver, :eigsolver],
@@ -29,9 +29,9 @@ gradient_iterschemes = [[:fixed, :diffgauge], [:fixed, :diffgauge]]
29
steps = -0.01:0.005:0.01
30
31
naive_gradient_combinations = [
32
- (:simultaneous, :halfinfinite, :tsvd),
33
- (:simultaneous, :fullinfinite, :tsvd),
34
- (:sequential, :halfinfinite, :tsvd),
+ (:simultaneous, :halfinfinite, :full),
+ (:simultaneous, :fullinfinite, :full),
+ (:sequential, :halfinfinite, :full),
35
]
36
naive_gradient_done = Set()
37
test/utility/svd_wrapper.jl
@@ -23,7 +23,7 @@ r = randn(dtype, ℂ^m, ℂ^n)
R = randn(space(r))
broadenings = [10.0^k for k in -16:-4]
-full_alg = SVDAdjoint(; rrule_alg=(; alg=:tsvd), broadening=0)
+full_alg = SVDAdjoint(; rrule_alg=(; alg=:full, broadening=0))
27
iter_alg = SVDAdjoint(; fwd_alg=(; alg=:iterative))
28
@testset "Non-truncacted SVD" begin
@@ -43,7 +43,7 @@ end
43
44
45
@testset "Truncated SVD with χ=$χ and ε=$ε broadening" for ε in broadenings
46
- broadened_alg = @set full_alg.broadening = ε
+ broadened_alg = @set full_alg.rrule_alg.broadening = ε
47
l_unbroadened, g_unbroadened = withgradient(A -> lossfun(A, full_alg, R, trunc), r)
48
l_broadened, g_broadened = withgradient(A -> lossfun(A, broadened_alg, R, trunc), r)
49
@@ -81,7 +81,7 @@ symm_R = randn(dtype, space(symm_r))
81
82
83
@testset "Truncated symmetric SVD with χ=$χ and ε=$ε broadening" for ε in broadenings
84
85
l_unbroadened, g_unbroadened = withgradient(
86
A -> lossfun(A, full_alg, symm_R, symm_trspace), symm_r
87
0 commit comments