From d80d4f145787d1e2907bf75a3ab5a98ff2f144f9 Mon Sep 17 00:00:00 2001 From: Katharine Hyatt Date: Fri, 31 Jul 2026 09:15:13 +0200 Subject: [PATCH 1/3] Try reducing twist mem usage --- .../twist.jl | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/test/enzyme-indexmanipulations-flip-twist-transform/twist.jl b/test/enzyme-indexmanipulations-flip-twist-transform/twist.jl index 2cacc2b3d..915fceac9 100644 --- a/test/enzyme-indexmanipulations-flip-twist-transform/twist.jl +++ b/test/enzyme-indexmanipulations-flip-twist-transform/twist.jl @@ -15,14 +15,14 @@ eltypes = (Float64, ComplexF64) A = randn(T, V[1] ⊗ V[2] ← (V[3] ⊗ V[4] ⊗ V[5])') has_braiding = BraidingStyle(sectortype(eltype(V))) isa HasBraiding if has_braiding && !(T <: Real && !(sectorscalartype(sectortype(A)) <: Real)) - EnzymeTestUtils.test_reverse(twist!, TA, (copy(A), TA), (1, Const); atol, rtol, fkwargs = (inv = false,)) - EnzymeTestUtils.test_reverse(twist!, TA, (copy(A), TA), ([1, 3], Const); atol, rtol, fkwargs = (inv = true,)) - EnzymeTestUtils.test_reverse(twist!, TA, (copy(A), TA), (1, Const); atol, rtol) - EnzymeTestUtils.test_reverse(twist!, TA, (copy(A), TA), ([1, 3], Const); atol, rtol) - EnzymeTestUtils.test_forward(twist!, TA, (copy(A), TA), (1, Const); atol, rtol, fkwargs = (inv = false,)) - EnzymeTestUtils.test_forward(twist!, TA, (copy(A), TA), ([1, 3], Const); atol, rtol, fkwargs = (inv = true,)) - EnzymeTestUtils.test_forward(twist!, TA, (copy(A), TA), (1, Const); atol, rtol) - EnzymeTestUtils.test_forward(twist!, TA, (copy(A), TA), ([1, 3], Const); atol, rtol) + EnzymeTestUtils.test_reverse(twist!, TA, (A, TA), (1, Const); atol, rtol, fkwargs = (inv = false,)) + EnzymeTestUtils.test_reverse(twist!, TA, (A, TA), ([1, 3], Const); atol, rtol, fkwargs = (inv = true,)) + EnzymeTestUtils.test_reverse(twist!, TA, (A, TA), (1, Const); atol, rtol) + EnzymeTestUtils.test_reverse(twist!, TA, (A, TA), ([1, 3], Const); atol, rtol) + EnzymeTestUtils.test_forward(twist!, TA, (A, TA), (1, Const); atol, rtol, fkwargs = (inv = false,)) + EnzymeTestUtils.test_forward(twist!, TA, (A, TA), ([1, 3], Const); atol, rtol, fkwargs = (inv = true,)) + EnzymeTestUtils.test_forward(twist!, TA, (A, TA), (1, Const); atol, rtol) + EnzymeTestUtils.test_forward(twist!, TA, (A, TA), ([1, 3], Const); atol, rtol) end end end From 5d5d2f0b27d544480deb1915172cafc023bfd36d Mon Sep 17 00:00:00 2001 From: Katharine Hyatt Date: Fri, 31 Jul 2026 10:08:15 +0200 Subject: [PATCH 2/3] Also for flip and remove extraneous printing --- .../flip.jl | 14 ++++++++++---- .../permute.jl | 1 - .../twist.jl | 14 ++++++++++---- 3 files changed, 20 insertions(+), 9 deletions(-) diff --git a/test/enzyme-indexmanipulations-flip-twist-transform/flip.jl b/test/enzyme-indexmanipulations-flip-twist-transform/flip.jl index e2de670fc..03ce56f03 100644 --- a/test/enzyme-indexmanipulations-flip-twist-transform/flip.jl +++ b/test/enzyme-indexmanipulations-flip-twist-transform/flip.jl @@ -6,6 +6,8 @@ using Random spacelist = ad_spacelist(fast_tests) eltypes = (Float64, ComplexF64) +is_ci = get(ENV, "CI", "false") == "true" + @timedtestset "Enzyme - Index Manipulations (flip):" begin @timedtestset "$(TensorKit.type_repr(sectortype(eltype(V)))) ($T) TA ($TA)" for V in spacelist, T in eltypes, TA in (Duplicated,) atol = default_tol(T) @@ -15,13 +17,17 @@ eltypes = (Float64, ComplexF64) A = randn(T, V[1] ⊗ V[2] ← (V[3] ⊗ V[4] ⊗ V[5])') EnzymeTestUtils.test_reverse(flip, TA, (A, TA), (1, Const); atol, rtol, fkwargs = (inv = false,)) EnzymeTestUtils.test_reverse(flip, TA, (A, TA), ([1, 3], Const); atol, rtol, fkwargs = (inv = true,)) - EnzymeTestUtils.test_reverse(flip, TA, (A, TA), (1, Const); atol, rtol) - EnzymeTestUtils.test_reverse(flip, TA, (A, TA), ([1, 3], Const); atol, rtol) + if !is_ci + EnzymeTestUtils.test_reverse(flip, TA, (A, TA), (1, Const); atol, rtol) + EnzymeTestUtils.test_reverse(flip, TA, (A, TA), ([1, 3], Const); atol, rtol) + end EnzymeTestUtils.test_forward(flip, TA, (A, TA), (1, Const); atol, rtol, fkwargs = (inv = false,)) EnzymeTestUtils.test_forward(flip, TA, (A, TA), ([1, 3], Const); atol, rtol, fkwargs = (inv = true,)) - EnzymeTestUtils.test_forward(flip, TA, (A, TA), (1, Const); atol, rtol) - EnzymeTestUtils.test_forward(flip, TA, (A, TA), ([1, 3], Const); atol, rtol) + if !is_ci + EnzymeTestUtils.test_forward(flip, TA, (A, TA), (1, Const); atol, rtol) + EnzymeTestUtils.test_forward(flip, TA, (A, TA), ([1, 3], Const); atol, rtol) + end end end end diff --git a/test/enzyme-indexmanipulations-flip-twist-transform/permute.jl b/test/enzyme-indexmanipulations-flip-twist-transform/permute.jl index 28102a3b1..e61036677 100644 --- a/test/enzyme-indexmanipulations-flip-twist-transform/permute.jl +++ b/test/enzyme-indexmanipulations-flip-twist-transform/permute.jl @@ -12,7 +12,6 @@ Tαs = is_ci ? (Active,) : (Active, Const) Tβs = is_ci ? (Active,) : (Active, Const) @timedtestset "Enzyme - Index Manipulations (permute!): $(TensorKit.type_repr(sectortype(eltype(V)))) ($T)" for V in spacelist, T in eltypes - println(TensorKit.type_repr(sectortype(eltype(V)))) atol = default_tol(T) rtol = default_tol(T) symmetricbraiding = BraidingStyle(sectortype(eltype(V))) isa SymmetricBraiding diff --git a/test/enzyme-indexmanipulations-flip-twist-transform/twist.jl b/test/enzyme-indexmanipulations-flip-twist-transform/twist.jl index 915fceac9..9c1437bf1 100644 --- a/test/enzyme-indexmanipulations-flip-twist-transform/twist.jl +++ b/test/enzyme-indexmanipulations-flip-twist-transform/twist.jl @@ -8,6 +8,8 @@ using Random spacelist = ad_spacelist(fast_tests) eltypes = (Float64, ComplexF64) +is_ci = get(ENV, "CI", "false") == "true" + @timedtestset "Enzyme - Index Manipulations (twist):" begin @timedtestset "$(TensorKit.type_repr(sectortype(eltype(V)))) ($T)" for V in spacelist, T in eltypes, TA in (Duplicated,) atol = default_tol(T) @@ -17,12 +19,16 @@ eltypes = (Float64, ComplexF64) if has_braiding && !(T <: Real && !(sectorscalartype(sectortype(A)) <: Real)) EnzymeTestUtils.test_reverse(twist!, TA, (A, TA), (1, Const); atol, rtol, fkwargs = (inv = false,)) EnzymeTestUtils.test_reverse(twist!, TA, (A, TA), ([1, 3], Const); atol, rtol, fkwargs = (inv = true,)) - EnzymeTestUtils.test_reverse(twist!, TA, (A, TA), (1, Const); atol, rtol) - EnzymeTestUtils.test_reverse(twist!, TA, (A, TA), ([1, 3], Const); atol, rtol) + if !is_ci + EnzymeTestUtils.test_reverse(twist!, TA, (A, TA), (1, Const); atol, rtol) + EnzymeTestUtils.test_reverse(twist!, TA, (A, TA), ([1, 3], Const); atol, rtol) + end EnzymeTestUtils.test_forward(twist!, TA, (A, TA), (1, Const); atol, rtol, fkwargs = (inv = false,)) EnzymeTestUtils.test_forward(twist!, TA, (A, TA), ([1, 3], Const); atol, rtol, fkwargs = (inv = true,)) - EnzymeTestUtils.test_forward(twist!, TA, (A, TA), (1, Const); atol, rtol) - EnzymeTestUtils.test_forward(twist!, TA, (A, TA), ([1, 3], Const); atol, rtol) + if !is_ci + EnzymeTestUtils.test_forward(twist!, TA, (A, TA), (1, Const); atol, rtol) + EnzymeTestUtils.test_forward(twist!, TA, (A, TA), ([1, 3], Const); atol, rtol) + end end end end From 92a405ebe08140b624a8d0147aeec59fef1ab867 Mon Sep 17 00:00:00 2001 From: Katharine Hyatt Date: Fri, 31 Jul 2026 11:38:19 +0200 Subject: [PATCH 3/3] Try combining flip and twist --- .../flip.jl | 16 ++++++++- .../twist.jl | 34 ------------------- 2 files changed, 15 insertions(+), 35 deletions(-) delete mode 100644 test/enzyme-indexmanipulations-flip-twist-transform/twist.jl diff --git a/test/enzyme-indexmanipulations-flip-twist-transform/flip.jl b/test/enzyme-indexmanipulations-flip-twist-transform/flip.jl index 03ce56f03..66efa44f4 100644 --- a/test/enzyme-indexmanipulations-flip-twist-transform/flip.jl +++ b/test/enzyme-indexmanipulations-flip-twist-transform/flip.jl @@ -8,13 +8,27 @@ eltypes = (Float64, ComplexF64) is_ci = get(ENV, "CI", "false") == "true" -@timedtestset "Enzyme - Index Manipulations (flip):" begin +@timedtestset "Enzyme - Index Manipulations (flip and twist):" begin @timedtestset "$(TensorKit.type_repr(sectortype(eltype(V)))) ($T) TA ($TA)" for V in spacelist, T in eltypes, TA in (Duplicated,) atol = default_tol(T) rtol = default_tol(T) has_braiding = BraidingStyle(sectortype(eltype(V))) isa HasBraiding if has_braiding A = randn(T, V[1] ⊗ V[2] ← (V[3] ⊗ V[4] ⊗ V[5])') + if !(T <: Real && !(sectorscalartype(sectortype(A)) <: Real)) + EnzymeTestUtils.test_reverse(twist!, TA, (A, TA), (1, Const); atol, rtol, fkwargs = (inv = false,)) + EnzymeTestUtils.test_reverse(twist!, TA, (A, TA), ([1, 3], Const); atol, rtol, fkwargs = (inv = true,)) + if !is_ci + EnzymeTestUtils.test_reverse(twist!, TA, (A, TA), (1, Const); atol, rtol) + EnzymeTestUtils.test_reverse(twist!, TA, (A, TA), ([1, 3], Const); atol, rtol) + end + EnzymeTestUtils.test_forward(twist!, TA, (A, TA), (1, Const); atol, rtol, fkwargs = (inv = false,)) + EnzymeTestUtils.test_forward(twist!, TA, (A, TA), ([1, 3], Const); atol, rtol, fkwargs = (inv = true,)) + if !is_ci + EnzymeTestUtils.test_forward(twist!, TA, (A, TA), (1, Const); atol, rtol) + EnzymeTestUtils.test_forward(twist!, TA, (A, TA), ([1, 3], Const); atol, rtol) + end + end EnzymeTestUtils.test_reverse(flip, TA, (A, TA), (1, Const); atol, rtol, fkwargs = (inv = false,)) EnzymeTestUtils.test_reverse(flip, TA, (A, TA), ([1, 3], Const); atol, rtol, fkwargs = (inv = true,)) if !is_ci diff --git a/test/enzyme-indexmanipulations-flip-twist-transform/twist.jl b/test/enzyme-indexmanipulations-flip-twist-transform/twist.jl deleted file mode 100644 index 9c1437bf1..000000000 --- a/test/enzyme-indexmanipulations-flip-twist-transform/twist.jl +++ /dev/null @@ -1,34 +0,0 @@ -using Test, TestExtras -using TensorKit -using TensorOperations -using VectorInterface: Zero, One -using Enzyme, EnzymeTestUtils -using Random - -spacelist = ad_spacelist(fast_tests) -eltypes = (Float64, ComplexF64) - -is_ci = get(ENV, "CI", "false") == "true" - -@timedtestset "Enzyme - Index Manipulations (twist):" begin - @timedtestset "$(TensorKit.type_repr(sectortype(eltype(V)))) ($T)" for V in spacelist, T in eltypes, TA in (Duplicated,) - atol = default_tol(T) - rtol = default_tol(T) - A = randn(T, V[1] ⊗ V[2] ← (V[3] ⊗ V[4] ⊗ V[5])') - has_braiding = BraidingStyle(sectortype(eltype(V))) isa HasBraiding - if has_braiding && !(T <: Real && !(sectorscalartype(sectortype(A)) <: Real)) - EnzymeTestUtils.test_reverse(twist!, TA, (A, TA), (1, Const); atol, rtol, fkwargs = (inv = false,)) - EnzymeTestUtils.test_reverse(twist!, TA, (A, TA), ([1, 3], Const); atol, rtol, fkwargs = (inv = true,)) - if !is_ci - EnzymeTestUtils.test_reverse(twist!, TA, (A, TA), (1, Const); atol, rtol) - EnzymeTestUtils.test_reverse(twist!, TA, (A, TA), ([1, 3], Const); atol, rtol) - end - EnzymeTestUtils.test_forward(twist!, TA, (A, TA), (1, Const); atol, rtol, fkwargs = (inv = false,)) - EnzymeTestUtils.test_forward(twist!, TA, (A, TA), ([1, 3], Const); atol, rtol, fkwargs = (inv = true,)) - if !is_ci - EnzymeTestUtils.test_forward(twist!, TA, (A, TA), (1, Const); atol, rtol) - EnzymeTestUtils.test_forward(twist!, TA, (A, TA), ([1, 3], Const); atol, rtol) - end - end - end -end